Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android视频帧不会填充横向屏幕_Android_Orientation - Fatal编程技术网

android视频帧不会填充横向屏幕

android视频帧不会填充横向屏幕,android,orientation,Android,Orientation,我有一段代码,叫做onConfigurationChanged: private void setVideoLayoutParams(){ LinearLayout.LayoutParams params; if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){ // this works as expected showNav

我有一段代码,叫做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


我做错了什么?

将视频视图放在相对布局中,并添加alignparentright、alignparentleft、alignparenttop和alignparentbottom true。它将是完美的。

您的布局是这样的,对吗

<?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>

尝试创建xml的横向布局,并按照我说的做。它对我有用,也没用。这可能与我只删除横向中的导航栏和状态栏有关吗?这是匹配父项而不是填充父项,但除此之外,是的
         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);