如何制作一个支持截屏的应用程序? - Android Java

How to make an app, that support display cut out? - Android Java

我有一个 phone 的显示屏被切断了。 而如今 流行的 phones 是显示屏被切断了。 但我注意到,当我测试 横向游戏 时,它不会 support/recognize phone 的显示中断。 而且它不是完全全屏的。 https://i.stack.imgur.com/zSaMo.png

举个例子,荒野乱斗: https://i.stack.imgur.com/uwB8c.jpg

在 Android Java 应用程序中 隐藏/support/recognize 显示被截断了吗?

谢谢,祝你有愉快的一天!

根据 official documentation:

Android might not allow the content view to overlap the system bars. To override this behavior and force content to extend into the cutout area, apply any of the following flags to the view visibility via the View.setSystemUiVisibility(int) method:

  • SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  • SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
  • SYSTEM_UI_FLAG_LAYOUT_STABLE

另请注意,可以使用 setSystemUiVisibility is deprecated in API Level 30 and windowInsetsController

编辑:尝试使用所有这些标志:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        //Hide status and navigation bars
        int uiOptions;
        if (Build.VERSION.SDK_INT < 19) {
            uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION //Prevent layout resize
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE        //when bars are shown
                    | View.SYSTEM_UI_FLAG_FULLSCREEN //Enable full screen
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //Hides status bar
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; //Hides navigation bar
        } else {
            uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION //Prevent layout resize
                            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE        //when bars are shown
                            | View.SYSTEM_UI_FLAG_FULLSCREEN //Enable full screen
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //Hides status bar
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION //Hides navigation bar
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; //Immersive ui experience
        }
        getWindow().getDecorView().setSystemUiVisibility(uiOptions);
    }
}

这些标志肯定会删除状态栏,内容将全屏显示。

然后尝试通过删除每个标志并查看其对屏幕内容的影响来修改此代码。这样,你就会真正了解每个标志的用途。

最后,阅读每个标志的 javadoc,因为它们提供了许多详细信息,并且将回答您关于每个标志的几乎所有问题。