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