public class SystemBarTintManager {
private View mStatusBarTintView;
public SystemBarTintManager(Activity activity) {
ViewGroup decorViewGroup = (ViewGroup) activity.getWindow().getDecorView();//获取状态栏的View
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
mStatusBarTintView = new View(activity);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT
, getInternalDimensionSize(activity.getResources()), Gravity.TOP);
mStatusBarTintView.setLayoutParams(params);
decorViewGroup.addView(mStatusBarTintView);
}
}
/**
* Apply the specified color tint to the system status bar.
*
* @param color The color of the background tint.
*/
public void setStatusBarTintColor(int color) {
mStatusBarTintView.setBackgroundColor(color);
}
/**
* get system status bar height.
*
* @return height.
*/
private int getInternalDimensionSize(Resources res) {
int result = 0;
int resourceId = res.getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = res.getDimensionPixelSize(resourceId);
}
return result;
}
}
在value-19中设置
<item name="android:fitsSystemWindows">true</item>
//让系统留出statuebar的位置
<item name="android:windowTranslucentStatus">true</item>
//设置statuebar半透明
调用方法:在baseActivity中调用
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintColor(ContextCompat.getColor(this, R.color.colorPrimaryDark)); //注意颜色的获取
另:上面的代码是分析自GitHub的的https://github.com/jgilfelt/SystemBarTint,具体源码可以去GitHub查看。