沉浸式模式Android Studio

时间:2015-07-17 18:36:55

标签: java android api flags

我想让我正在以沉浸式模式运行的游戏,但android studio无法识别标识沉浸式模式,因为我将最小API设置为16,我知道沉浸式模式仅在KitKat中添加,这是稍后的。有没有办法让我的应用程序在沉浸式模式下运行而不更改我的最低API?

2 个答案:

答案 0 :(得分:3)

是的,这是可能的,但当然这种沉浸式模式仅适用于具有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);
}

然后它不应该在旧操作系统上搞乱。

更新:第二段代码已更新)

答案 1 :(得分:0)

只需将此功能粘贴到活动类中,即可完成

   @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);
    }
  }