全屏与非全屏动态切换的正确方式

设置全屏

设置一个activity全屏,可以在manifest中配置activity的主题

之前都是使用全屏的主题

android:theme="@android:style/android.NoTitleBar.Fullscreen"  

现在全屏只是一个属性而已

<item name="android:windowFullscreen">trueitem>

也可以在代码中设置全屏

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,         WindowManager.LayoutParams.FLAG_FULLSCREEN);  

动态切换非全屏

正常思维会认为这样切换非全屏

  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

然而这样切换会导致你的Activity在从全屏变化为非全屏时无法适应主题的变化,而被切掉一块

全屏与非全屏动态切换的正确方式_第1张图片

FLAG_FORCE_NOT_FULLSCREEN这个属性从字面上也能看的出来是一种暴力方式,所以这样切换非全屏是不对的。

正确的从全屏动态切换到非全屏的方式:


this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

你可能感兴趣的:(android)