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

本文探讨了在Android中如何使用getWindow().getDecorView().setSystemUiVisibility方法设置状态栏属性,包括全屏显示、隐藏状态栏、隐藏虚拟按键等,并列举了相关参数的含义和效果,提供了参考资料以供深入学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

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

在本次项目中,又遇到了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这个标志来帮助你的应用维持一个稳定的布局。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值