我有一个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)会添加规则或将其删除。这是对的吗?
提前感谢您的帮助!
答案 0 :(得分:1)
不,第二个参数是规则相对于的视图的id。你需要使用removeRule来删除它。
说实话,我认为更容易构建一个新的LayoutParam对象并替换旧的。此外,您可能需要在更改后调用父级的requestLayout,我不确定它是否会自动执行。