在播放videoView时,只在layout-land android中制作一个fullScreen

use*_*381 3 android android-manifest android-layout android-videoview

我正在创建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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我的问题是,当我旋转设备时,它重新开始活动,这导致视频流停止,我想阻止这一点.所以.我补充说明了这一行

 android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
Run Code Online (Sandbox Code Playgroud)

但是这导致onCreate()的代码只执行一次.

如何使我的应用程序连续播放视频流,当我旋转设备在布局土地上全屏,然后回到肖像使其正常?

希望有人得到我的意思.提前致谢.

Cla*_*kXP 12

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

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

更新:

在清单文件中,您必须在Activity声明中添加以下代码以避免活动重启:

android:configChanges="screenLayout|screenSize|orientation"
Run Code Online (Sandbox Code Playgroud)