getWindow().getDecorView().setSystemUiVisibility(...)设置状态栏属性

一、前言

在之前写过的文章中,有写过状态栏设置相关的博客。

在本次项目中,又遇到了getWindow().getDecorView().setSystemUiVisibility设置状态栏属性的情况。

代码为在一个BaseActivity的onResume方法中调用一个自定义的fullscreen()方法,而这个fullscreen()方法具体实现就是设置状态栏的属性。

BaseActivity中onResume方法:

    @Override
    protected void onResume() {
    
    
        super.onResume();
        fullscreen();
        sendBroadcastToLauncherOnResume();
    }

其中用于设置状态栏属性的方法fullscreen():

    private void fullscreen() {
    
    
            View decorView = getWindow().getDecorView();
            decorView.setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }

这边主要实现的是getWindow().getDecorView().setSystemUiVisibility()方法,这是View.java中的一个方法,然后在其中添加对应的实参,实现对状态栏各种设置,接下来我们主要看的就是这些实参。

上面的五个参数分别对应:
1.使用了SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN和SYSTEM_UI_FLAG_LAYOUT_STABLE,注意两个Flag必须要结合在一起使用,表示会让应用的主体内容占用系统状态栏的空间

2.下文setSystemUiVisibility(int visibility)方法可传入的实参为:5.Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。

3.下文setSystemUiVisibility(int visibility)方法可传入的实参为:7.隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。

4.下文setSystemUiVisibility(int visibility)方法可传入的实参为:3.Activity全屏显示,且状态栏被隐藏覆盖掉。

5.下文Android4.4新特性第二个

二、查阅相关资料学习总结

调用方式如下:

getActivity().getWindow().getDecorView().setSystemUiVisibility;

getActivity().getWindow().getDecorView().getSystemUiVisibility;

参考资料:

动态显示和隐藏状态栏

setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) dose not work

管理系统UI之二:隐藏Status Bar (Hiding the Status Bar)

Android状态栏微技巧,带你真正理解沉浸式模式

setSystemUiVisibility(int visibility)方法可传入的实参为:

  1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态栏的正常情况)。

  2. View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。

  3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。

  4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。

  5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

  6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

  7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。

  8. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。

Android4.4新特性又增加下面俩个:

View.SYSTEM_UI_FLAG_IMMERSIVE

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

Android 4.4新特性之开启全屏沉浸模式

另外

View.SYSTEM_UI_FLAG_LAYOUT_STABLE这个标志来帮助你的应用维持一个稳定的布局。

猜你喜欢

转载自blog.csdn.net/ambitionLlll/article/details/111176342