Android setSystemUiVisibility详解

Android  2020年9月1日 pm12:15发布4年前 (2020)更新 城堡大人
104 0 0

简介

下面是setSystemUiVisibility可以设置的一部分flag

  1. SYSTEM_UI_FLAG_LOW_PROFILE 弱化状态栏和导航栏的图标
  2. SYSTEM_UI_FLAG_HIDE_NAVIGATION 隐藏导航栏,用户点击屏幕会显示导航栏
  3. SYSTEM_UI_FLAG_FULLSCREEN 隐藏状态栏
  4. SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 拓展布局到导航栏后面
  5. SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 拓展布局到状态栏后面
  6. SYSTEM_UI_FLAG_LAYOUT_STABLE 稳定的布局,不会随系统栏的隐藏、显示而变化
  7. SYSTEM_UI_FLAG_IMMERSIVE 沉浸模式,用户可以交互的界面
  8. SYSTEM_UI_FLAG_IMMERSIVE_STICKY 沉浸模式,用户可以交互的界面。同时,用户上下拉系统栏时,会自动隐藏系统栏

测试代码

    /**
     * systemUiVisibility 单个测试代码
     */
    private void systemUiVisibilityTest(int flag) {
        Log.d(TAG, "showFullScreenTwo fullScreenTwo : " + fullScreenTwo);
        int options = getWindow().getDecorView().getSystemUiVisibility();
        if (fullScreenTwo) {
            options &= ~flag;
        } else {
            options |= flag;
        }
        getWindow().getDecorView().setSystemUiVisibility(newUiOptions);
        fullScreenTwo = !fullScreenTwo;
        return;
    }

flag详解

下面单独讲解各个flag的意义

SYSTEM_UI_FLAG_LOW_PROFILE

设置状态栏和导航栏中的图标变小,变模糊或者弱化其效果。这个标志一般用于游戏,电子书,视频,或者不需要去分散用户注意力的应用软件。

PS:在我的MTK Android 9.0设备上没有什么变化。

SYSTEM_UI_FLAG_HIDE_NAVIGATION

隐藏导航栏,点击屏幕任意区域,导航栏将重新出现,并且不会自动消失。

PS:通过测试

SYSTEM_UI_FLAG_FULLSCREEN

隐藏状态栏,点击屏幕区域不会出现,需要从状态栏位置下拉才会出现。

PS: 通过测试

SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

将布局内容拓展到导航栏的后面。

PS:通过测试

SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

将布局内容拓展到状态的后面。

PS:在我的MTK Android 9.0机器上测试,这个效果跟SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION一样。不知道是不是我这代码的底层修改过。

SYSTEM_UI_FLAG_LAYOUT_STABLE

稳定布局,主要是在全屏和非全屏切换时,布局不要有大的变化。一般和View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN、View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION搭配使用。同时,android:fitsSystemWindows要设置为true。

PS:单独测试没有啥效果,组合测试暂时没有验证。

SYSTEM_UI_FLAG_IMMERSIVE

使状态栏和导航栏真正的进入沉浸模式,即全屏模式,如果没有设置这个标志,设置全屏时,我们点击屏幕的任意位置,就会恢复为正常模式。所以,View.SYSTEM_UI_FLAG_IMMERSIVE都是配合View.SYSTEM_UI_FLAG_FULLSCREEN和View.SYSTEM_UI_FLAG_HIDE_NAVIGATION一起使用的。

PS:单独测试没有啥效果,组合测试暂时没有验证。

SYSTEM_UI_FLAG_IMMERSIVE_STICKY

它的效果跟View.SYSTEM_UI_FLAG_IMMERSIVE一样。但是,它在全屏模式下,用户上下拉状态栏或者导航栏时,这些系统栏只是以半透明的状态显示出来,并且在一定时间后会自动消息。

PS:单独测试没有啥效果,组合测试暂时没有验证。

参考文章

  1. Android setSystemUiVisibility详解

 历史上的今天

  1. 2023: 再谈onConfigurationChanged(0条评论)
  2. 2019: 龙应台:幸福就是……(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

歌德:野蔷薇

少年看到一朵蔷薇,荒野的小蔷薇,那样的娇嫩可爱而鲜艳,急急忙忙走向前,看得非常欢喜。蔷薇,蔷薇,红蔷薇,荒野的小蔷薇。 少年说:“我要来采你,荒野的小蔷薇!”蔷薇说:“我要刺你,让你用不会忘记。我不愿被你采折。”蔷薇,蔷薇,红蔷薇,荒野的小蔷薇。 ...

彼得.B.巴赫:失去爱人的滋味

布宜诺斯艾利斯的街灯要比纽约的街灯暗得多,这是我们在阿根廷的半年里最深刻的体会。我们租用的车子老旧,车身落满了这座城市的灰尘,前挡风玻璃更加遮蔽了射进来的光。当我们驾车离开当地医院,在第一个路口等红灯时,我打破了我对露丝许下的两个最重要的结婚誓言:第一,我以一个医生的口吻和她说了话;第二,我欺骗了她...

SharedPreferences最后一次写入时断电偶尔存在不保存问题

前言最近测试反馈,播放音乐的信息断电时偶尔不记忆。项目中的记忆是使用sharedpreferences的,sharedpreferences是以xml文件保存,保存的位置在:/data/data/[包名]/shared_prefs测试反馈的关键字[断电]、[偶尔]和[不记忆],也就是说这...

《MySQL基础教程》笔记1

前言学习一下MySQL,之前一直没有系统的学习一下。最近有空,看了《MySQL基础教程-西泽梦路》,简单的做一下笔记。记录于此,方便自己回忆。正文我这以Window版的phpstudy软件验证。需要进入这个目录,才可以使用mysql命令D:\phpstudy_pro\Extension...

Android数据库查询记录

前言记录一下数据库查询,模糊查询等Java方法,方便自己查阅。正文查询Android多媒体下面是查询audio文件隐藏内容!付费阅读后才能查看!¥2 ¥3多个隐藏块只需支付一次付费阅读匹配查询数据查询可以分为精准匹配查询,也可以模糊匹配查询。like 模糊查询隐藏内容!付费阅读后...

AsyncTask源码分析UML流程图

好早想学习画流程图,但一直拖着没有真正的画。最近分析了《AsyncTask源码分析》因此为这画了一个流程图,作为练习。图画得不是很好,主要是为了表达一下对AsyncTask的步骤理解。因为刚开始学画UML,有些细节没有把握好,望理解。谢谢 在SyncTask中,会调用两次PostR...