Android沉浸式模式和向后兼容性
-
21-12-2019 - |
题
我希望我的应用程序在适当的时候能够身临其境,并在api太低时模仿一些功能。这是一个合适的方法吗?有没有更有效的方法?
private boolean apiTooLowForImmersive = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT){
apiTooLowForImmersive = true;
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
setContentView(R.layout.activity_menu);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus && !apiTooLowForImmersive ) {
getWindow().getDecorView()
.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
);}
}
解决方案
不,这是最好的方法(或者好吧,这是我在我的应用程序中使用的相同系统)
只是一个音符,使 apiTooLowForImmersive
static
和 public
public static boolean apiTooLowForImmersive = false;
并在一个 static
块。
static {
apiTooLowForImmersive =
(Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT);
}
有了这个,你可以在每个类中使用这个字段,每次你需要知道哪些代码可以安全使用。
不隶属于 StackOverflow