沉浸式模式 Android 工作室

Immersive Mode Android Studio

我希望我正在制作的游戏在沉浸模式下 运行,但是 android 工作室无法识别标志沉浸模式,因为我将我的最小 API 设置为16,我知道只有在后来的 KitKat 中才添加了沉浸式模式。有什么方法可以让我的应用程序 运行 处于沉浸式模式而不更改我的最小值 API?

是的,这是可能的,但当然这种沉浸式模式只能在运行 KitKat 及更高版本的设备上运行。这,在你这边很奇怪,事实上,根据你的话,你甚至不能像这样得到这些标志:

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;

(或其中的一部分)。如果是这样,那么它看起来,你的 compileSdkVersion 比它应该的要低。一开始,我建议您将 compileSdkVersion 更新为 22(同时使 targetSdkVersion 也为 22)(您可以在 build.gradle)

中找到这两个版本

当你这样做,并且你想在你想使用沉浸模式添加条件的地方使用这些标志时,它看起来像这样:

if (Build.VERSION.SDK_INT >= VERSION_CODES.KITKAT) {
    int UI_OPTIONS = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
    getWindow().getDecorView().setSystemUiVisibility(UI_OPTIONS);
}

那么它不应该把老 OS 搞得一团糟。

(更新:第二个代码块已更新)

只需将此函数粘贴到 Activity Class 即可完成

   @Override
   public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    if (hasFocus) {

        View decorView = getWindow().getDecorView();
        decorView.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_STICKY);
    }
  }