在Android4.4之前,我们的应用没法改变手机的状态栏颜色,当我们打开应用时,在屏幕的顶部有一条黑色的状态栏,和应用的风格非常不协调;为了提供更好的界面交互,google在Android4.4以后提供了设置沉浸式状态栏的方法;在这里记录下自己学习时看的一些文章和setSystemUiVisibility() 一些常用属性的意思还有大神开源的沉浸式工具类;
文章
2.【张鸿洋的博客】Android 沉浸式状态栏攻略 让你的状态栏变色吧
3. 知乎的回答
4 状态栏攻略
开源的工具类
getDecorView().setSystemUiVisibility() 一些常用属性 ()“沉浸式状态栏”--完全理解沉浸模式
View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。等同于(WindowManager.LayoutParams.FLAG_FULLSCREEN)
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
View.SYSTEM_UI_FLAG_IMMERSIVE:这个flag只有当设置了SYSTEM_UI_FLAG_HIDE_NAVIGATION才起作用。
如果没有设置这个flag,任意的View相互动作都退出SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。如果设置就不会退出。
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY:这个flag只有当设置了SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION 时才起作用。如果没有设置这个flag,任意的View相互动作都坏退出SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。 如果设置就不受影响。
View.SYSTEM_UI_FLAG_LAYOUT_STABLE: 保持View Layout不变,隐藏状态栏或者导航栏后,View不会拉伸。
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:让View全屏显示,Layout会被拉伸到StatusBar下面,不包含NavigationBar。
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:让View全屏显示,Layout会被拉伸到StatusBar和NavigationBar下面 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);会让layout 从状态栏那边开始 显示,有些手机会隐藏状态栏,但有些手机不会如 华为的(NEM-AL10)getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);会保持layout 不会拉伸getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);会隐藏导航栏,但是点击屏幕的任何地方,他都会从新显示出来。
下面把我自己写的过程记录下
从4.4后系统增加了透明状态栏的特性WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS 这可以在代码中调用,也可在style.xml 设置 ,我使用的是在style.xml 中设置, 如一下图 示例,我在res分别建立 默认的values、values-v19、values-v21 。
style 里面的内容 分别为
在Android manifest 文件中 的activity 增加android:theme 如下图所示
现在来看下运行效果:
这样的一个简单的效果就出来了, 具体其他效果,修改状态栏颜色,修改状态栏字体颜色,大家可以参考:Android 沉浸式状态栏的实现 , statusBarUtils 中文说明 ,https://www.jianshu.com/p/27d548b2c942 , ImmersionBar等其他,这些地址大神已经把细节和实现方式都讲的很清楚了。我口才不好,就不班门弄斧了。
android 在6.0之后才提供了修改状态栏字体颜色,但是在6.0以下,状态栏字体是白色,部分手机厂商提供 在 4.4 至 5.0 状态栏黑色字体模式 地址如下:
记录下简单的刘海屏官方适配地址