有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java沉浸式模式Android Studio

我想让我正在制作的游戏在沉浸式模式下运行,但安卓 studio不识别沉浸式模式标志,因为我将最低API设置为16,我知道沉浸式模式仅在KitKat中添加,这将在以后添加。有没有办法让我的应用程序在不改变最小API的情况下以沉浸式模式运行


共 (2) 个答案

  1. # 1 楼答案

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

    那么它就不应该在较旧的操作系统上出现混乱

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

  2. # 2 楼答案

    只需将这个函数粘贴到活动类中,就完成了

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