android 修改状态栏颜色

android 修改状态栏颜色

      android 状态栏的颜色会随着背景颜色的改变而自适应调整颜色,但是在设置了沉浸式状态栏之后状态栏颜色不能即时调整颜色,会导致状态栏与背景颜色一致从而让状态栏颜色消失。此时我们就需要通过自定义状态栏颜色,或者说是提供状态栏颜色调整接口吧,因为我这里是h5 APP所以需要给前端提供接口。

1、代码相对很简单,使用该工具类即可

package com.iwiteks.PalmarTourism.util;

import android.app.Activity;
import android.os.Build;
import android.view.View;

/**
 * 创建于 2018/5/17 7:53 PM
 * @author spirits
 * 类说明:
 * 所属公司:贵州中测
 */
public class StatusBarFontUtil {

    /**
     * 黑色字体状态栏
     * @param activity
     */
    public static void setLightStatusBarColor(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            activity.getWindow()
                    .getDecorView()
                    .setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            |View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        }
    }

    /**
     * 白色字体状态栏
     * @param activity
     */
    public static void setWhiteStatusBarColor(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            activity.getWindow()
                    .getDecorView()
                    .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        }
    }
}

2、若想设置默认颜色,只需要在Activity的onCreate里面初始化设置为默认

// 默认设置成白色
StatusBarFontUtil.setWhiteStatusBarColor(mActivity);

3、提供给H5调用接口

/**
 * 设置白色字体状态栏 传值是white和black
 */
@JavascriptInterface
public void setWStatusBarColor(String color) {
    mActivity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if (color.equals("white")) {
                StatusBarFontUtil.setWhiteStatusBarColor(mActivity);
            } else if (color.equals("black")){
                StatusBarFontUtil.setLightStatusBarColor(mActivity);
            }
        }
    });
}
到此就ok了,关注工具类即可

猜你喜欢

转载自blog.csdn.net/u013144287/article/details/80459403