记录android 沉浸式学习过程

2018-07-20  本文已影响0人  Y_C_Y_U

在Android4.4之前,我们的应用没法改变手机的状态栏颜色,当我们打开应用时,在屏幕的顶部有一条黑色的状态栏,和应用的风格非常不协调;为了提供更好的界面交互,google在Android4.4以后提供了设置沉浸式状态栏的方法;在这里记录下自己学习时看的一些文章和setSystemUiVisibility() 一些常用属性的意思还有大神开源的沉浸式工具类;

文章

1. Android 沉浸式状态栏的实现

2.【张鸿洋的博客】Android 沉浸式状态栏攻略 让你的状态栏变色吧

3. 知乎的回答

状态栏攻略

关于Android 4.4后所谓"沉浸式"效果的实现

开源的工具类

1.StatusBarUtil

2.ImmersionBar

4.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 状态栏黑色字体模式  地址如下:

小米黑色字体 , 魅族oppo 

记录下简单的刘海屏官方适配地址

华为小米刘海屏 Android O 适配小米刘海屏 Android P 适配,  oppo,    vivo ,

上一篇 下一篇

猜你喜欢

热点阅读