沉浸式模式 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);
}
}
我希望我正在制作的游戏在沉浸模式下 运行,但是 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);
}
}