[快速搞定]android 状态栏一体化 沉浸式状态栏
一、前言
最近负责的几个项目都被要求将系统状态栏的颜色设置与app主题色一致,网上找到许多资料都没有一下解决我的问题,最终结合几个解决方案总结出一个最简单、最快的状态栏一体化方案,只要三步你的app就将有更好的用户体验了。
注意:由于Google只在Android4.4之后可以修改状态栏颜色,所以本方案只有在4.4以上才有效果(PS:国内大部分手机都已经使用4.4以上系统,5.0、5.1、6.0等也在逐渐增加,特别是Android6.0 是目前新出的手机的标配,4.4以下都可以不用考虑了)
二、先看效果
先来看看使用前后的效果对比吧:(第一张是使用前,第二张是使用后)
三、使用方法
不多说,只要三步即可:
1、拷贝状态栏管理类SystemStatusManager到你的项目中(下载地址在最后);
2、在你的BaseActivity中的onCreate方法中调用一下代码(如果只要某个页面一体化,可以在需要一体化的页面加入改语句):
new SystemStatusManager(this).setTranslucentStatus(R.color.colorPrimary);//设置状态栏透明,参数为你要设置的颜色
- 3、将你项目中的所有页面的根布局加载一个属性:(只在activity中加即可.不要在fragment里面加) android:fitsSystemWindows=”true”
注意:如果状态栏与标题栏中间有一条线导致有过渡感,那么在你项目的主题(style文件)中加入去掉线条的语句即可:
<item name="android:windowContentOverlay">@null</item>
四、举例
1、在BaseActivity中使用:
/**
* Created by HDL on 2016/7/22.
*/
public class BaseActivity extends Activity {
public Activity mActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = this;
new SystemStatusManager(this).setTranslucentStatus(R.color.colorPrimary);//设置状态栏透明
}
}
2、根布局加入属性
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical"
tools:context="com.hdl.newkjdemo.newkjdemo.ui.main.MainActivity">
<include layout="@layout/custom_actionbar" />
五、下载地址
这里是下载地址