精华内容
下载资源
问答
  • setsystemuivisibility
    千次阅读
    2022-01-15 14:38:01

    SystemUI setSystemUiVisibility参数属性

    View.SYSTEM_UI_FLAG_FULLSCREEN

    全屏模式,占据整个屏幕,隐藏状态栏等界面,但是导航栏不会隐藏。如果用户进行操作,隐藏的系统界面会立马出现并清除该flag。

    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

    隐藏导航栏,布局会往下移。如果用户进行操作,导航栏会立马出现并清除该flag。

    View.SYSTEM_UI_FLAG_IMMERSIVE

    沉浸模式。修饰SYSTEM_UI_FLAG_HIDE_NAVIGATION,使用户操作不再显示导航栏(但是仍能通过从底部往上滑调出导航栏并清除flag)。单独使用无效。

    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

    粘性沉浸模式。修饰SYSTEM_UI_FLAG_FULLSCREEN与SYSTEM_UI_FLAG_HIDE_NAVIGATION。用户操作不再清除flag,从边缘滑入可以调出状态栏和导航栏,并且过几秒之后自动隐藏。单独使用无效。

    View. SYSTEM_UI_FLAG_LOW_PROFILE

    低配模式,设置后,系统状态栏的信号等图标消失,重要图标颜色变浅(如电量图标)。

    View.SYSTEM_UI_FLAG_LAYOUT_STABLE

    加入SYSTEM_UI_FLAG_LAYOUT_STABLE后,SystemUI发生变化也不会影响用户布局,单独使用该FLAG界面不会有任何变化。

    View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

    状态栏的图标以深色绘制。设置了这个属性,状态栏会以与状态栏背景颜色兼容的模式绘制。

    View.SYSTEM_UI_FLAG_VISIBLE

    用户表示状态栏可见,默认flag

    更多相关内容
  • 通过setSystemUiVisibility(int)方法,改变状态栏或者其他系统UI的可见性。 getWindow().getDecorView().setSystemUiVisibility(int visibility); 1 默认显示状态栏和导航栏,SYSTEM_UI_FLAG_VISIBLE 1.SYSTEM_...

    前言

    通过setSystemUiVisibility(int)方法,改变状态栏或者其他系统UI的可见性。

    getWindow().getDecorView().setSystemUiVisibility(int visibility);
    
    • 1

    默认显示状态栏和导航栏,SYSTEM_UI_FLAG_VISIBLE
    在这里插入图片描述

    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

    稳定布局,需要配合SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATIONSYSTEM_UI_FLAG_LAYOUT_FULLSCREEN使用,同时设置布局的android:fitsSystemWindows属性。

    未使用SYSTEM_UI_FLAG_LAYOUT_STABLE的效果。
    在这里插入图片描述
    使用SYSTEM_UI_FLAG_LAYOUT_STABLE的效果。
    在这里插入图片描述

    7.SYSTEM_UI_FLAG_IMMERSIVE

    配合SYSTEM_UI_FLAG_HIDE_NAVIGATIONSYSTEM_UI_FLAG_FULLSCREEN使用,使状态栏和导航栏真正的进入沉浸模式。点击屏幕任意区域,不会退出全屏模式,只有用户上下拉状态栏或者导航栏时才会退出。

    8. SYSTEM_UI_FLAG_IMMERSIVE_STICKY

    效果同SYSTEM_UI_FLAG_IMMERSIVE,当用户上下拉状态栏或者导航栏时,这些系统栏会以半透明的状态显示,并且在一段时间后消失。
    在这里插入图片描述

    9. SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

    设置状态栏的颜色,6.0版本以后有效。
    在这里插入图片描述

    展开全文
  • Android setSystemUiVisibility详解

    千次阅读 2019-02-24 23:49:55
    本文主要讲解setSystemUiVisibility方法中的参数各个属性标志对应的用法和实际效果。主要讲解的标志有:   - SYSTEM_UI_FLAG_LOW_PROFILE - SYSTEM_UI_FLAG_HIDE_NAVIGATION - SYSTEM_UI_FLAG_FULLSCREEN - ...

    简介

    本文主要讲解setSystemUiVisibility方法中的参数各个属性标志对应的用法和实际效果。主要讲解的标志有:
     

    - SYSTEM_UI_FLAG_LOW_PROFILE
    - SYSTEM_UI_FLAG_HIDE_NAVIGATION
    - SYSTEM_UI_FLAG_FULLSCREEN
    - SYSTEM_UI_FLAG_LAYOUT_STABLE
    - SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    - SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    - SYSTEM_UI_FLAG_IMMERSIVE
    - SYSTEM_UI_FLAG_IMMERSIVE_STICKY

    下图是没有设置任何标志时的效果。

    这里写图片描述
    解析
     

    View.SYSTEM_UI_FLAG_LOW_PROFILE

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

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);

    实际效果

    这里写图片描述

    从上图的效果中,我们可以看出状态栏和导航栏中相应的图标都变成了一个小点,这就达到了弱化的效果,具体变成什么效果要根据实际的机型系统版本而定。同时,点击状态栏和导航栏相应的位置,这些图标的效果会还原成正常的状态。
    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

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

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

    实现效果

    这里写图片描述
     

    View.SYSTEM_UI_FLAG_FULLSCREEN

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

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);

    实现效果

    这里写图片描述
     

    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

    将布局内容拓展到导航栏的后面。
    代码调用

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);

    实现效果

    这里写图片描述
     

    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

    将布局内容拓展到状态的后面。
    代码调用

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

    实现效果

    这里写图片描述
     

    View.SYSTEM_UI_FLAG_LAYOUT_STABLE

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

    private void toggle() {
        if (mVisible) {
            getWindow().getDecorView().setSystemUiVisibility(
                      View.SYSTEM_UI_FLAG_LOW_PROFILE
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        } else {
            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            );
        }
    
        mVisible = !mVisible;
    }

     

    activity_main.xml

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:background="@drawable/bg"
        >
    </FrameLayout>

     

    实现效果

        没有加View.SYSTEM_UI_FLAG_LAYOUT_STABLE标志的效果

    这里写图片描述

        加了View.SYSTEM_UI_FLAG_LAYOUT_STABLE标志的效果

    这里写图片描述

    通过这个上面的效果对比,可以很清楚的区分View.SYSTEM_UI_FLAG_LAYOUT_STABLE这个属性的特性了。
    View.SYSTEM_UI_FLAG_IMMERSIVE

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

    getWindow().getDecorView().setSystemUiVisibility(
                      View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);

    实现效果

    这里写图片描述

    对比View.SYSTEM_UI_FLAG_HIDE_NAVIGATION的效果,可以看出来,在没有设置View.SYSTEM_UI_FLAG_IMMERSIVE时,随便点击屏幕就可以解除隐藏导航栏的状态。所以,设置View.SYSTEM_UI_FLAG_IMMERSIVE就是真正进入沉浸模式。
    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

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

    getWindow().getDecorView().setSystemUiVisibility(
                     View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

    实现效果

    这里写图片描述
    额外补充

    我们在设置全屏和非全屏的时候,可以通过下面的方法实现,代码如下:

    if (mVisible){ //全屏
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    } else { //非全屏
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        );
    }

    总结
    Flag     意义
    SYSTEM_UI_FLAG_LOW_PROFILE     弱化状态栏和导航栏的图标
    SYSTEM_UI_FLAG_HIDE_NAVIGATION     隐藏导航栏,用户点击屏幕会显示导航栏
    SYSTEM_UI_FLAG_FULLSCREEN     隐藏状态栏
    SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION     拓展布局到导航栏后面
    SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN     拓展布局到状态栏后面
    SYSTEM_UI_FLAG_LAYOUT_STABLE     稳定的布局,不会随系统栏的隐藏、显示而变化
    SYSTEM_UI_FLAG_IMMERSIVE     沉浸模式,用户可以交互的界面
    SYSTEM_UI_FLAG_IMMERSIVE_STICKY     沉浸模式,用户可以交互的界面。同时,用户上下拉系统栏时,会自动隐藏系统栏
    ---------------------
    作者:qqxiaoqiang1573
    来源:CSDN
    原文:https://blog.csdn.net/QQxiaoqiang1573/article/details/79867127

    展开全文
  • 再后来找到了setSystemUiVisibility,完美解决问题。实现没有任何技术含量,但是属性比较多,所以也就记录一下,到时候需要可以回档看一下。 我的dialog布局是match_parent,设置 当前布局 view....

    近期给dialog不能全屏显示困扰,我设置Activity是有颜色状态栏的,所以显示dialog时状态栏也还在,考虑过 更改getwindow.attributes 的属性,但是并不起作用,也就想到的另外一个东西:动态更改状态栏。

    一开始有想到,是不是重置直接设置getwindow.setFlags(value)就行了,但是结果是不可以的这个操作必须在setContenView之前。再后来找到了setSystemUiVisibility,完美解决问题。实现没有任何技术含量,但是属性比较多,所以也就记录一下,到时候需要可以回档看一下。

    我的dialog布局是match_parent,设置 当前布局

    view.setSystemUiVisibility( View.SYSTEM_UI_FLAG_FULLSCREEN)

    就可以实现dialog全屏的需求啦。

    setSystemUiVisibility的相关属性

    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION, //隐藏导航栏

    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION,

    View.SYSTEM_UI_LAYOUT_FLAGS,

    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, //全屏,状态栏会盖在布局上

    View.SYSTEM_UI_FLAG_FULLSCREEN, //全屏,状态栏和导航栏不显示

    View.SYSTEM_UI_FLAG_VISIBLE, //显示状态栏和导航栏

    View.SYSTEM_UI_FLAG_LAYOUT_STABLE,// 保持View Layout不变,隐藏状态栏或者导航栏后,View不会拉伸。

    View.SYSTEM_UI_FLAG_LOW_PROFILE,//状态栏:低能显示状态,状态栏上一些图标显示会被隐藏。

    View.SYSTEM_UI_FLAG_IMMERSIVE//只有当设置了SYSTEM_UI_FLAG_HIDE_NAVIGATION才起作用。如果没有设置,任意的View相互动作都退出SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。如果设置就不会退出。

    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY//只有当设置了SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION 时起作用。如果没有设置,任意的View相互动作都退出SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。

    展开全文
  • 最近突然发现项目中实现了沉浸式状态栏的页面布局位置显示都出现了异常,像这样还好线上版本是正常的...= Build.VERSION_CODES.M) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FL...
  • Android之setSystemUiVisibility总结

    千次阅读 2019-12-07 16:14:38
    关于沉浸式体验模式,我们通常会在Activity,使用decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_XXXXX) 来设置,具体示例可以看这篇文章。 View 各种SYSTEM_UI_FLAG的总结 View.SYSTEM_UI_FLAG_...
  • 代码 int vis = getWindow().getDecorView().... //这个一行代码主要是对状态栏进行设计 getWindow().getDecorView().setSystemUiVisibility(vis); 解析 setSystemUiVisibility()方法,这是View.java中的一个方法
  • DecorView的setSystemUiVisibility方法

    千次阅读 2019-07-03 11:58:31
    开发中,通常都是在onCreate()中调用setContentView(R.layout.custom_layout)...想要更改一些高级一点的样式的话可以调用DecorView的setSystemUiVisibility方法,DecorView通过getWindow().getDecorView()获取,如下...
  • 调用setSystemUiVisibility方法,该方法传入的参数可以为: View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。 View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。 ...
  • public void setSystemUiVisibility (int visibility) Request that the visibility of the status bar or other screen/window decorations be changed. This method is used to put the...
  • Android setSystemUiVisibility() flag详解

    千次阅读 2019-12-28 23:01:05
    View.SYSTEM_UI_FLAG_FULLSCREEN 全屏模式,占据整个屏幕,隐藏状态栏等界面,不过导航栏不会隐藏。如果用户进行操作,隐藏的系统界面会立马出现并清除该flag。 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION ...
  • View.setSystemUiVisibility(int) 方法可传入的实参为: 1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。 2. View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏...
  • ** ** 可供选择的参数: ...SYSTEM_UI_FLAG_LOW_PROFILE ...getWindow().getDecorView()....getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
  • getActivity().getWindow().getDecorView().setSystemUiVisibility; getActivity().getWindow().getDecorView().getSystemUiVisibility; 参考资料: http://blog.csdn.net/stevenhu_223/article/details/12...
  • 在本次项目中,又遇到了getWindow().getDecorView().setSystemUiVisibility设置状态栏属性的情况。 代码为在一个BaseActivity的onResume方法中调用一个自定义的fullscreen()方法,而这个fullscreen()方法具体实现...
  • setSystemUiVisibility(int visibility)方法可传入的实参为:  1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态栏的正常情况)。  2. View.INVISIBLE:隐藏状态栏,同时...
  • 2019独角兽企业重金招聘Python工程师标准>>...getActivity().getWindow().getDecorView().setSystemUiVisibility; getActivity().getWindow().getDecorView().getSystemUiVisibility;   参考资料: ...
  • View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性。  setSystemUiVisibility(int visibility)方法可传入的实参为: ...
  • 全屏模式 setSystemUiVisibility() 场景 交互模式 回调 备注 向后倾斜模式 SYSTEM_UI_FLAG_FULLSCREEN SYSTEM_UI_FLAG_HIDE_NAVIGATION 1. 适用于用户不会与屏幕进行大量互动的全屏体验 1. 当用户希望调出系统栏时...
  • 最后注释掉这行代码getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)就没得问题。 说明是setSystemUiVisibility方法导致了打开页面时焦点在导航上,从而使得view需要点击...
  • Android setSystemUiVisibility()简单用法

    千次阅读 2016-10-09 16:03:42
    Android setSystemUiVisibility()作用及简单用法
  • View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态栏的正常情况)。 View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。 View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且...
  • 深入理解ANDROID 第3卷,... 为什么要走这样的流程:一直要走到PhoneStatusBar 是因为为了考虑一些flag,然后再将更新后的SystemUiVisibility 逐级的上传上去 为什么使用View 来设置?...
  • 我给surfaceview 设置setSystemUiVisibility 事件之后,屏幕没有获取焦点时,点击其屏幕,他的点击事件都不响应。解决方法,setOnSystemUiVisibilityChangeListener( new View.OnSystemUiVisibilityChangeListener...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,971
精华内容 2,388
关键字:

setsystemuivisibility