19

我有一个想要全屏运行的应用程序。如果我有一个带有 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

4 回答 4

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。

于 2016-01-17T19:03:52.087 回答
1

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

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

于 2014-12-17T11:55:37.487 回答
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>

于 2014-12-19T10:15:15.430 回答
-4

沉浸式模式有两种方法
要使其保持沉浸感,请更改这条线

View.SYSTEM_UI_FLAG_IMMERSIVE

通过这条线-

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
于 2014-08-27T02:03:25.933 回答