android沉浸
① android沉浸式
1、如何修改状态栏颜色。
2、如何修改状态栏文字颜色。
3、如何不被虚拟键隐藏,或隐藏虚拟键。
4、如何消除沉浸式。
5、如何修改导航栏内部的fragment的状态栏颜色。
可参考: https://www.imooc.com/article/74825
在styles.xml中添加style
在manifest.xml文件中进行配置
添加依赖
可以参考:暂无
以下内容可以直接复制到工具类中,在activity初始化的时候调用即可。文字颜色分亮色暗色,分别是白色和黑色。
可以参考: https://www.jianshu.com/p/ce65dc7b0b56
以下方法可以放置在工具类中方便调用。
1、不隐藏底部虚拟键,不隐藏状态栏,布局顶部延伸至状态栏顶部不被虚拟键遮挡,且状态栏透明。
2、隐藏底部的虚拟键和状态栏
fragment的状态栏颜色其实就是activity状态栏颜色,所以还是去改变activity的状态栏颜色这么一个思路。
使用第三方组件,所以添加依赖
给导航栏控件添加tab切换事件监听,然后动态改变状态栏颜色即可,同样使用barUtils工具类。
最后在推荐一个github上的关于沉浸式效果的组件:
https://github.com/yanzhenjie/Sofia
② Android 沉浸式/透明式状态栏、导航栏
Android 从4.4开始引进透明状态栏和导航栏的概念,并且在5.0进行了改进,将透明变成了半透明的效果。虽然此特性最早出现在ios,但不否认效果还是很赞的。
至于4.4以下的手机,就不要考虑此特性了,好在4.4以下的手机份额已经非常小了。
我们先来看一下透明状态栏的实现,两种常见效果图如下:
虚拟导航栏并不是所有的手机都有,华为的手机多比较常见,就是上图屏幕底部按钮那块区域。设置导航栏和状态栏类似:
这是官方的解释,大致意思就是我们在布局的最外层设置 android:fitsSystemWindows="true",会在屏幕最上方预留出状态栏高度的padding。
由于fitsSystemWindows属性本质上是给当前控件设置了一个padding,所以我们设置到根布局的话,会导致状态栏是透明的,并且和窗口背景一样。
但是多数情况,我们并不在根布局设置这个属性,我们想要的无外乎是让内容沉浸在状态栏之中。所以我们经常设置在最上端的图片背景、Banner之类的,如果是Toolbar的,我们可以使用一层LinearLayout包裹,并把这个属性设置给LinearLayout,这样就可以避免Toolbar的内容下沉了。如:
上述方法可以解决普通页面的透明式状态栏需求,如有复杂需求可以参考下面这些:
Android 系统状态栏沉浸式/透明化完整解决方案
Android 沉浸式状态栏的实现
Android沉浸式状态栏(透明状态栏)最佳实现
还有开源库推荐: ImmersionBar