gpt4 book ai didi

android - 播放videoView时仅在layout-land android中制作全屏

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:51 24 4
gpt4 key购买 nike

我正在创建 android 应用程序来播放 liveStream,我在 layout.xml 中添加了 videoView 并添加了 layout-land 文件夹

我想让应用程序仅在布局区域而非纵向中全屏显示视频

所以我在onCreate()中添加了如下代码:

public void onConfigurationChanged(Configuration newConfig){
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE
{
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}

但我的问题是,当我旋转设备时,它会重新启动 Activity ,这会导致视频流停止,我想防止这种情况发生。所以。我添加了 manifest 这条线

 android:configChanges="keyboard|keyboardHidden|orientation|screenSize"

但这会导致 onCreate() 的代码只执行一次。

如何让我的应用连续播放视频流,以及当我旋转设备以在布局中全屏显示然后返回纵向时使其正常播放?

希望有人明白我的意思。提前致谢。

最佳答案

您应该将视频 View (或内容父级)添加为布局文件中的最后一个元素。并使用下一个代码:

private RelativeLayout.LayoutParams paramsNotFullscreen; //if you're using RelativeLatout           

@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);


if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) //To fullscreen
{
paramsNotFullscreen=(RelativeLayout.LayoutParams)mVideoView.getLayoutParams();
RelativeLayout.LayoutParams params=new LayoutParams(paramsNotFullscreen);
params.setMargins(0, 0, 0, 0);
params.height=ViewGroup.LayoutParams.MATCH_PARENT;
params.width=ViewGroup.LayoutParams.MATCH_PARENT;
params.addRule(RelativeLayout.CENTER_IN_PARENT);
mVideoView.setLayoutParams(params);

}
else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
mVideoView.setLayoutParams(paramsNotFullscreen);
}
}

它获取 videoview layoutparams 的副本并将其保存在全局变量中。然后使用以前的值创建一个新的 layoutparams 对象,但现在将限制设置为 match_parent 并将其设置在您的视频 View 中。您现在的视频 View 是全屏的。当您将设备纵向放置时,paramsNotFullscreen 会恢复之前的值。

更新:

在您的 list 文件中,您必须在 Activity 声明中添加以下代码以避免 Activity 重新启动:

android:configChanges="screenLayout|screenSize|orientation"

关于android - 播放videoView时仅在layout-land android中制作全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13011891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com