Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android沉浸式模式和向后兼容性_Android_Api_Android 4.4 Kitkat_Android Fullscreen - Fatal编程技术网

Android沉浸式模式和向后兼容性

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

我希望我的应用程序在适当的时候是沉浸式的,在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=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添加SuppressWarning(“NewApi”);这是一个警告,如果您使用了不受支持的东西,它会报告您(但您不需要该警告,因为您已经处理了此情况),是的,您可以这样做。只有我。只是被
@TargetApi()
绊倒了。有什么区别?非常感谢!使用TatgetAPI时,您可以像其他警告一样抑制该警告,不同之处在于,如果您使用的是TargetAPI较新的功能,则会再次收到该警告。无论如何,这根本不是一个真正的错误,保留它以确保在需要时记住使用反向代码