Android setSystemUiVisibility详解

Android  2020年9月1日 pm12:15发布4年前 (2020)更新 91es.com站长
86 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、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

Vim命令简单介绍

一:复制命令y: 复制在可视模式下选中的文本yy or Y: 复制整行文本y[n]w: 复制一(n)个词y[n]l: 复制光标右边1(n)个字符y[n]h: 复制光标左边1(n)个字符y$: 从光标当前位置复制到行尾y0: 从光标当前位置复制到行首y1G或ygg: 复制光标以上的所有...

龙应台:一个人怎样才算是有文化?

曾经有一个特别奇怪的场合,做为台北市首任文化局长的我被要求当场简单扼要地说出来,文化是什么?是在一九九九年的议会里。从九月开始,官员每天四五个小时坐在议会里接受议员轮番质询。我是个新生,议员发言多半用一种怒吼咆哮的声音,麦克风再把音量加以扩大,耳朵嗡嗡作响,一天下来,晕眩的症状出现,我总在头昏脑...

linux禁止root远程登录

推荐使用 读书导航 极客导航 :125啦极客导航(http://www.91es.com/jike.html)一、添加新用户    adduser admin    passwd  admin (修改密码)系统提示输入确认密码后再输入一次。OK添加成功。二、禁止root远程登录...

余秋雨:我在等你

我藏不住秘密,也藏不住忧伤,正如我藏不住爱你的喜悦,藏不住分离时的彷徨。 我就是这样坦然,你舍得伤,就伤。 如果有一天,你要离开我,我不会留你,我知道你有你的理由;如果有一天,你说还爱我,我会告诉你,其实我一直在等你;如果有一天,我们擦肩而过,我会停住脚步...

史铁生:想念地坛

想念地坛,主要是想念它的安静。坐在那园子里,坐在不管它的哪一个角落,任何地方,喧嚣都在远处。近旁只有荒藤老树,只有栖居了鸟儿的废殿颓檐、长满了野草的残墙断壁,暮鸦吵闹着归来,雨燕盘桓吟唱,风过檐铃,雨落空林,蜂飞蝶舞草动虫鸣……四季的歌咏此起彼伏从不间断。地坛的安静并非无声。有一天大雾迷漫,世界...

从维熙:夜空中的木拐

非常凑巧,游览了好莱坞和迪斯尼,适逢圣诞节的黄昏。又从洛杉矶开车一路疾行,穿越加州南部地区,连夜向亚历桑那州的首府菲尼克斯飞驰。平日喧闹的高速公路,在这圣诞之夜出奇地安静,隔着车窗外望,四野一片迷茫。此时,公路两旁的灯光消失了往日的鲜亮,就像与人一路同行的月光一样,把地球上这个头号富国,变成了难...