Android状态栏变色,沉浸式状态栏
Android中的状态栏默认背景是黑色的,有的时候看起来不是很美观,所以现在很多时候公司的产品都会对状态栏改变颜色。
github上也有开源项目 SystemBarTint 用起来方便快捷。
下面是我对状态栏背景颜色改变总结:
* Android目前只支持系统是4.4以上的,4.4以下的就算你用开源也没有办法,反正我没有找到 *
- 先来一个快捷却解决不了的, 可以直接在style中添加
<item name="android:statusBarColor">@color/bg_title</item>
但是很遗憾会有提示说:需要API 21的 ,就是系统要5.0以上。5.0以下的状态栏颜色没有变化。
5.0以上的效果:
5.0以下的效果,还是原来的配方,还是原来的味道………
- 没事,关了一扇门还有门,办法还是有的。
加载布局之后添加这两句代码,就有沉浸的效果,发现状态栏不见了(4.4系统以上的),
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
效果如下,标题栏上移了。
其实就是我们的布局上移了,上移了状态栏的高度,这时候机会到了,我们可以在布局或者基类布局的顶部添加:
<View
android:id="@+id/status_view"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:visibility="gone"
/>
在代码中更改status_view的显示高度,让其等于状态栏高度,这时候之前的布局会整体下移状态栏高度,原理很简单。
RelativeLayout.LayoutParams params2 = (RelativeLayout.LayoutParams) statusView.getLayoutParams();
params2.height = statusBarHeight;
statusView.setLayoutParams(params2);
如果这时候statusView调用改变背景的方法,那么就可以达到所需的效果,包括状态栏渐变色都可以做到 只要你想做,哈哈
最后效果如下:
如有不正确的地方,请指正,感激不尽。