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了,关注工具类即可