Android沉浸式模式和向后兼容性
我希望我的应用程序在适当的时候是沉浸式的,在api太低的时候模仿一些功能。这样做合适吗?有没有更有效的方法Android沉浸式模式和向后兼容性,android,api,android-4.4-kitkat,android-fullscreen,Android,Api,Android 4.4 Kitkat,Android Fullscreen,我希望我的应用程序在适当的时候是沉浸式的,在api太低的时候模仿一些功能。这样做合适吗?有没有更有效的方法 private boolean apiTooLowForImmersive = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT < android.os
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=false;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if(Build.VERSION.SDK_INT
不,这是最好的方法(或者,它与我在应用程序中使用的系统相同)
只需注意,将apitoolow设置为沉浸式
静态
和公共
public static boolean apiTooLowForImmersive = false;
并在静态
块中为其赋值
static {
apiTooLowForImmersive =
(Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT);
}
static{
apiTooLowForImmersive=
(Build.VERSION.SDK_INT
这样,您可以在每个类中以及每次需要知道哪些代码可以安全使用时使用此字段。那么为什么要使用静态块呢?为什么不在创建时初始化它呢<代码>公共静态布尔apiTLFI=(SDK_INT
@TargetApi()
绊倒了。有什么区别?非常感谢!使用TatgetAPI时,您可以像其他警告一样抑制该警告,不同之处在于,如果您使用的是TargetAPI较新的功能,则会再次收到该警告。无论如何,这根本不是一个真正的错误,保留它以确保在需要时记住使用反向代码