沉浸式全屏低于4.4

时间:2014-02-08 22:04:27

标签: android fullscreen android-4.4-kitkat android-fullscreen android-4.2-jelly-bean

我有一个应用程序,我想全屏运行。如果我有一台带有4.4 KitKat的设备,可以很容易地设置SYSTEM_UI_FLAG_IMMERSIVE以使应用程序变为全屏。 但是,如果我有一个API低于4.4的设备。我不知道如何将它全屏视为具有沉浸式支持的KitKat。

我可以设置全屏,并隐藏导航标记以使应用程序全屏显示,但是一旦点击屏幕,这些标记就会重置,现在将显示导航栏和状态栏。

是否有解决方案,我可以在JB和可能的ICS设备上“模拟”沉浸式模式(下面不是必须的)。

我有一个方法hideSystemUI,它在OnSystemUiVisibilityChangeListener触发时运行,目前看起来像这样。

private void hideSystemUI() {
        actionBar.hide();
        isMenuVisible = false;
        if (currentapiVersion >= android.os.Build.VERSION_CODES.KITKAT){
            mDecorView.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);
        }
        else{
            mDecorView.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);
        }
}

我需要进行哪些更改才能使应用程序全屏显示,并且不会在每次点击时显示导航栏和状态栏,而是从顶部或底部显示幻灯片。

4 个答案:

答案 0 :(得分:3)

这就像你要获得的那样接近:

if (Build.VERSION.SDK_INT >= 19) {
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
} else {
    if (Build.VERSION.SDK_INT > 10) {
        findViewById(android.R.id.content).setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
    }
}

并且不支持SDK少于10的设备。无论如何,这些笑话者需要获得一个现代的Android。

答案 1 :(得分:1)

我遇到了同样的情况,经过一些研究后我发现由于安全问题,它不可能低于4.4,因此旧的API不会支持隐藏导航栏的方式。 即使从API 4.1中使用SYSTEM_UI_FLAG_LAYOUT_STABLE标志,您的布局也不会调整大小,它会在导航栏后面膨胀,但您需要确保它不会覆盖任何重要的UI组件。

https://developer.android.com/training/system-ui/immersive.html 希望这有助于.. :))

答案 2 :(得分:0)

只需将代码下方的代码复制到value / style.xml。

<resources>


<style name="AppBaseTheme" parent="Theme.AppCompat.Light">

</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>

</style>

答案 3 :(得分:-3)

沉浸式模式有两种方法
为了让它保持身临其境,请改变这条线

View.SYSTEM_UI_FLAG_IMMERSIVE

通过这一行 -

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY