Android 显示、隐藏状态栏和导航栏

作者: YuanchaoLi | 来源:发表于2019-03-26 08:36 被阅读36次

    Android 显示、隐藏状态栏和导航栏

    控制状态栏显示,Activity的主题中配置全屏属性

    <item name="android:windowFullscreen">true</item>
    

    控制状态栏显示,在setContentView之前设置全屏的flag

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
    

    控制状态栏显示,在任何位置通过添加和移除全屏的flag

    // 隐藏状态栏
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    // 显示状态栏
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    

    控制状态栏和导航栏显示,setSystemUiVisibility

    View.SYSTEM_UI_FLAG_LAYOUT_STABLE:全屏显示时保证尺寸不变。
    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,状态栏显示在Activity页面上面。
    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏导航栏
    View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
    View.SYSTEM_UI_FLAG_VISIBLE:Activity非全屏显示,显示状态栏和导航栏。
    View.INVISIBLE:Activity伸展全屏显示,隐藏状态栏。
    View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY:必须配合View.SYSTEM_UI_FLAG_FULLSCREEN和View.SYSTEM_UI_FLAG_HIDE_NAVIGATION组合使用,达到的效果是拉出状态栏和导航栏后显示一会儿消失。
    
    // 全屏展示
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            // 全屏显示,隐藏状态栏和导航栏,拉出状态栏和导航栏显示一会儿后消失。
            activity.getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        } else {
            // 全屏显示,隐藏状态栏
            activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
        }
    }
    
    // 非全屏显示,显示状态栏和导航栏
    activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
    

    相关文章

      网友评论

        本文标题:Android 显示、隐藏状态栏和导航栏

        本文链接:https://www.haomeiwen.com/subject/oxewvqtx.html