2015-10-05 5 views
0

Так я этот код, который называется onConfigurationChanged:андроид видеокадр не заполнит экран на пейзаж

private void setVideoLayoutParams(){ 
    LinearLayout.LayoutParams params; 
    if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){ 
     // this works as expected 
     showNavigationAndStatusBars(); 
     Display display = getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     params = new LinearLayout.LayoutParams(size.x, size.x * 9/16); 
    }else{ 
     hideNavigationAndStatusBars(); 
     // this does not work properly 
     Display display = getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     params = new LinearLayout.LayoutParams(size.x, size.y); 
    } 
    controller.setPauseButtonSize(); 
    Log.d(TAG, "video layout params set : " + params.width + "/" + params.height); 
    videoFrame.setLayoutParams(params); 
} 

private void hideNavigationAndStatusBars(){ 
    View decorView = getWindow().getDecorView(); 
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_FULLSCREEN; 
    decorView.setSystemUiVisibility(uiOptions); 

} 

private void showNavigationAndStatusBars(){ 
    View decorView = getWindow().getDecorView(); 
    int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; 
    decorView.setSystemUiVisibility(uiOptions); 
} 

Когда экран повернут в ландшафт, навигации и статус бары исчезают. Однако мой видеофрагмент не заполняет экран.

Небольшая часть в правой части экрана остается пустой и равна высоте навигационной панели. Еще одна небольшая часть в нижней части экрана, равная высоте панели уведомлений, остается пустой.

Когда параметры созданы, мой регистратор показывает 1794/1080. Когда я касаюсь экрана, я регистрирую размер видеофрагмента, и он показывает 1794/1009. Я думаю, это должно показать, в обоих случаях, 1800/1080.

Что я делаю неправильно?

ответ

0

Поместите свой видеоизображение в относительную компоновку и добавьте выравнивание, выравнивание, выравнивание и выравнивание по вертикали «true». Это будет прекрасно.

+0

просто попробовал. Я получил тот же результат :( – kimv

+0

Попробуйте создать ландшафтный макет xml и сделайте так, как я сказал. Это работает для меня. – Nivedh

+0

Не работает. Может ли это иметь какое-то отношение к тому, что я удаляю только навигацию и Строки состояния в ландшафте? – kimv

0

Ваш макет как это право?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 
    <VideoView android:id="@+id/myvideoview" 
      android:layout_width="fill_parent" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentBottom="true" 
      android:layout_height="fill_parent"> 
    </VideoView> 
</RelativeLayout> 

И попробуйте

  DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     android.widget.LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) videoView.getLayoutParams(); 
     params.width = metrics.widthPixels; 
     params.height = metrics.heightPixels; 
     params.leftMargin = 0; 
     videoView.setLayoutParams(params); 
+0

это match_parent вместо fill_parent, но кроме этого, да – kimv

Смежные вопросы