Android沉浸式模式转换

时间:2014-12-09 14:01:14

标签: android android-fullscreen android-transitions

我有一个Android应用程序,它使用沉浸式模式进行所有活动 - 所以它是一个完整的全屏应用程序。

我有一个BaseActivity类,所有其他活动都可以从中扩展。在此活动中,我调用以下内容以启用全屏/沉浸式

HelmiBlankActivity:

private boolean apiLowerImmersive = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
        apiLowerImmersive = true;
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

}


@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

  if(hasFocus && !apiLowerImmersive ) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE);
    }
}

在活动中效果很好,问题是:当打开一个新活动(按意图)时,动作栏/标题栏会显示一段时间,然后再次隐藏 - 这似乎有些迟钝/错误。

该应用程序还有一个主题: styles.xml:

<style name="FullscreenTheme" parent="android:Theme.Holo.Light">
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>

我也尝试过应用android:Theme.Holo.Light.NoActionBar - 在转换过程中没有成功。 我无法在stackoverflow上找到任何东西(btw是一个很棒的社区,并帮助我解决了许多问题)或互联网上的任何其他地方,并感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

如果您将此代码段放入onCreate()方法,您的活动将打开并显示已隐藏的条形码。

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE);

您还可以为旧版SDK添加条件。我在这个设置中遇到的唯一问题是,一旦我向下滑动以显示条形图,它们就不会再次隐藏......