java - 如何制作一个支持显示剪切的应用程序?- 安卓Java
问题描述
我有一部手机屏幕被剪掉了。如今,最流行的手机是带显示屏的。但我注意到,当我测试横向游戏时,它不支持/识别手机的显示屏被切断。而且它并不完全全屏。 https://i.stack.imgur.com/zSaMo.png
一个例子,Brawl Stars: https ://i.stack.imgur.com/uwB8c.jpg
在 Android Java 应用程序中是否有隐藏/支持/识别切出的显示?
感谢,并有一个愉快的一天!
解决方案
根据官方文档:
Android 可能不允许内容视图与系统栏重叠。要覆盖此行为并强制内容扩展到剪切区域,请通过 View.setSystemUiVisibility(int) 方法将以下任何标志应用于视图可见性:
- SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- SYSTEM_UI_FLAG_LAYOUT_STABLE
另请注意,在 API 级别 30 中不推荐使用setSystemUiVisibility ,可以使用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);
}
}
这些标志肯定会删除状态栏,内容将全屏显示。
然后尝试通过删除每个标志并查看其对屏幕内容的影响来处理此代码。这样,您将几乎了解每个标志的用途。
最后,阅读每个标志的 javadocs,因为它们提供了许多详细信息,并且几乎可以回答您关于每个标志的所有问题。
推荐阅读
- swift - 在 Head of view 中设置按钮
- class-diagram - 类图的组件以及它与 ERD 的区别
- c# - Asp.Net View Rendering 意外输出
- python - 标准差的错误值
- java - Java:当你想要一个空的分隔符时如何拆分字符串
- java - Javafx:如何使用源文件的驱动程序文件来显示创建的形状
- python - 当键是变量时,如何遍历字典中的所有值?
- r - 如何在 R 中生成 5000 个合成数据集,每个数据集有 1000 个高斯观测值;
- java - 我想在Java中按下按钮时显示图像
- macos - Plaform.exit() 使 Java 崩溃