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