Android4.4修改状态栏颜色

来源:互联网 发布:ubuntu 字体文件夹 编辑:程序博客网 时间:2024/06/05 11:04
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查看。

原创粉丝点击