Android全屏状态设置

建议的设置

设置全屏的方式-系统状态栏(status bar)和Action Bar(操作栏)隐藏

  1. setSystemUiVisibility(int),适合临时性的全屏,例如书籍阅读
  2. 窗口标志-WindowManager.LayoutParams.FLAG_FULLSCREEN,适合持续性的全屏状态,如全屏游戏。

setSystemUiVisibility(int)

 private final Runnable mHidePart2Runnable = new Runnable() {
        @SuppressLint("InlinedApi")
        @Override
        public void run() {
            // Delayed removal of status and navigation bar

            // Note that some of these constants are new as of API 16 (Jelly Bean)
            // and API 19 (KitKat). It is safe to use them, as they are inlined
            // at compile-time and do nothing on earlier devices.
            mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        }
    };

View.SYSTEM_UI_FLAG_LOW_PROFILE(Api14)

View已请求系统UI进入不显眼的“低调”模式。

这适用于游戏,图书阅读器,视频播放器或任何其他“沉浸式”应用程序,其中通常的系统镶边被视为过分分散注意力。

在低调模式下,状态栏和/或导航图标可能会变暗。

View.SYSTEM_UI_FLAG_FULLSCREEN(Api16)

View已请求进入正常的全屏模式,以便其内容可以接管屏幕(临时性的),同时仍允许用户与应用程序进行交互。

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY(Api19)

当使用SYSTEM_UI_FLAG_FULLSCREEN隐藏状态栏和/或使用SYSTEM_UI_FLAG_HIDE_NAVIGATION隐藏导航栏时,View将保持交互。使用此标志创建身临其境的体验,同时隐藏系统栏。如果未设置此标志,系统将在任何用户交互时强制清除SYSTEM_UI_FLAG_HIDE_NAVIGATION,如果用户从屏幕顶部滑动,SYSTEM_UI_FLAG_FULLSCREEN将被系统强制清除。

当系统栏以沉浸模式隐藏时,可以通过系统手势临时显示它们,例如从屏幕顶部滑动。这些瞬态系统栏将覆盖应用程序的内容,可能具有一定程度的透明度,并会在短暂超时后自动隐藏。

由于此标志是SYSTEM_UI_FLAG_FULLSCREEN和SYSTEM_UI_FLAG_HIDE_NAVIGATION的修饰符,因此只有在与这些标志中的一个或两个组合使用时才会起作用。

View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION(Api16)

视图希望它的窗口被布置好,就好像它已经请求了SYSTEM_UI_FLAG_HIDE_NAVIGATION一样,即使它现在还没有。 这允许它在切入和切出该模式时避免失真,其代价是它们的一些用户界面在显示时可能被屏幕装饰覆盖。 您可以通过fitSystemWindows(Rect)方法执行内部UI元素的布局来解释导航系统UI。

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION(Api14)

View已经请求暂时隐藏系统导航。

这比SYSTEM_UI_FLAG_LOW_PROFILE调用的状态更不显眼; 在屏幕上绘制基本导航控件(主屏幕,后屏幕等)的设备上,SYSTEM_UI_FLAG_HIDE_NAVIGATION将使其消失。 这非常有用(与FLAG_FULLSCREEN和FLAG_LAYOUT_IN_SCREEN窗口标记一起使用),用于使用显示器上的每个最后一个像素显示内容。

有一个限制:因为导航控件非常重要,最少的用户交互将导致它们立即重新出现。 发生这种情况时,该标志和SYSTEM_UI_FLAG_FULLSCREEN都会自动清除,以便两个元素同时重新出现。

显示系统状态栏-

 // Show the system bar
        mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);

隐藏系统状态栏

// Delayed removal of status and navigation bar

            // Note that some of these constants are new as of API 16 (Jelly Bean)
            // and API 19 (KitKat). It is safe to use them, as they are inlined
            // at compile-time and do nothing on earlier devices.
            mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        }
扫码领红包支持

你可能感兴趣的:(Android全屏状态设置)