在屏幕方向调整视频视图更改android

时间:2013-05-24 14:09:01

标签: android video

我有一个VideoView和流式传输mp4文件,工作正常。但是,我正在尝试将视频设置为在纵向时居中在屏幕上,并在横向时将其设置为全屏。我正在尝试的代码如下,但它无法正常工作。如果我切换到横向,它不会改变任何东西,直到我切换回肖像,然后它是全屏,并且对于手机的纵向视图而言太大。如何在横向拍摄时将视频视图调整为全屏,并在纵向时切换回以父母为中心的标准?我已将清单中的configChanges =“orientation”添加到我的活动中。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) videoView.getLayoutParams();         
        lp.addRule(RelativeLayout.CENTER_IN_PARENT, 1);
        lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 1);
        lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 1);
        lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 1);
        videoView.setLayoutParams(lp);          
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) videoView.getLayoutParams();
        lp.addRule(RelativeLayout.CENTER_IN_PARENT, 1);
        lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 0);
        lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 0);
        lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 0);
        videoView.setLayoutParams(lp);          
    }
}

另外,我认为在布局参数之后设置0,1(false,true)会添加规则或将其删除。这是对的吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

不,第二个参数是规则相对于的视图的id。你需要使用removeRule来删除它。

说实话,我认为更容易构建一个新的LayoutParam对象并替换旧的。此外,您可能需要在更改后调用父级的requestLayout,我不确定它是否会自动执行。