透明状态栏需要在android4.4及以上版本支持
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//判断当前系统版本是否是4.4及以上版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}
这样就出效果了,但是运行后会发现activity里的view向上移动了,此时只需要在布局文件中加入
android:fitsSystemWindows="true"
android:clipToPadding="true"
两个属性即可
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:fitsSystemWindows="true"
android:clipToPadding="true"
>
SystemBarTint 是Github 上的一个开源项目,其使用起来也很简单
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//判断当前系统版本是否是4.4及以上版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
//实例化一个SystemBarTintManager对象
SystemBarTintManager tintManager = new SystemBarTintManager(this);
//设置状态栏的颜色
tintManager.setStatusBarTintColor(getColor(R.color.colorAccent));
//启用
tintManager.setStatusBarTintEnabled(true);
}
}
这样便可便捷的更改状态栏的颜色了