我目前正在进行Android培训,因为我正试图正确隐藏导航栏。在training documentation中声明:
您可以使用隐藏Android 4.0及更高版本的导航栏 SYSTEM_UI_FLAG_HIDE_NAVIGATION标志。这个片段隐藏了两个 导航栏和状态栏:
然后他们继续提供代码示例。
View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
正如您所看到的那样,SYSTEM_UI_FLAG_FULLSCREEN
标志仅在4.1中可用,但他们说这个代码块是4.1。这不会导致应用程序崩溃吗?我的代码块应该更像是:
View decorView = getWindow().getDecorView();
if (Build.VERSION.SDK_INT == 14 || Build.VERSION.SDK_INT == 15){
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
decorView.setSystemUiVisibility(uiOptions);
} else if (Build.VERSION.SDK_INT >=16) {
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
}
答案 0 :(得分:1)
这不会导致应用程序崩溃吗?
不一定。
View.SYSTEM_UI_FLAG_FULLSCREEN
之类的值为static final int
。它们的实际数值被放入APK中,而不是在运行时查找的符号。因此,你不会因为那里有号码而崩溃。
设置未知标志时,setSystemUiVisibility()
会做什么,可能会有所不同。通常,它会没问题,因为平台通常只将标志屏蔽到用于平台API级别的位范围,因此高阶位中发生的事情是无关紧要的。但是,在setSystemUiVisibility()
的情况下,我没有特别尝试过这个。但是,如果Google的示例显示它在4.0上运行,并且如果您在4.0上运行它没有问题,那么您应该没问题。