2015-10-05 42 views
0

屏幕所以我有这样的代码,这就是所谓onConfigurationChanged:Android的视频帧不填充景观

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); 
} 

当屏幕旋转到景观,导航和状态栏消失。但是我的videoFrame不能填满屏幕。

屏幕右侧的一小部分保持空白,等于导航栏的高度。 屏幕底部等于通知栏高度的另一小部分保持空白。

当创建参数时,我的记录器显示1794/1080。当我触摸屏幕时,我记录了videoFrame的大小,并显示1794/1009。我的猜测是它应该显示,在这两种情况下,1800/1080。

我在做什么错?

回答

0

将您的Videoview放入相对布局中,并添加alignparentright,alignparentleft,alignparenttop和alignparentbottom“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