RN app开发适配安卓6.0 状态栏字体颜色为深色
2018-01-16 13:25
211 查看
RN app开发适配安卓6.0+ 状态栏字体颜色为深色
设置状态栏字体颜色的类,主要处理android 6 以下的机型package com.xxx; import android.app.Activity; import android.os.Build; import android.view.View; import android.view.Window; import android.view.WindowManager; import java.lang.reflect.Field; import java.lang.reflect.Method; public class MIUIHelper { /** * 需要MIUIV6以上 * * @param activity * @param dark 是否把状态栏字体及图标颜色设置为深色 * @return boolean 成功执行返回true */ public static boolean MIUISetStatusBarLightMode(Activity activity, boolean dark) { if(Build.VERSION.SDK_INT >= 24){ return false; } boolean result = false; Window window=activity.getWindow(); if (window != null) { Class clazz = window.getClass(); try { int darkModeFlag = 0; Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams"); Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE"); darkModeFlag = field.getInt(layoutParams); Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class); if(dark){ extraFlagField.invoke(window,darkModeFlag,darkModeFlag);//状态栏透明且黑色字体 }else{ extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体 } result=true; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //开发版 7.7.13 及以后版本采用了系统API,旧方法无效但不会报错,所以两个方式都要加上 if(dark){ activity.getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); }else { activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); } } }catch (Exception e){ } } return result; } }
在项目的MainActivity中调用,这里是UI异步渲染
@Override public void onCreate (Bundle savedInstanceState){ super.onCreate(savedInstanceState); MIUIHelper.MIUISetStatusBarLightMode(this, true); }4000
>
兼容机型MIX 2等高版本MIUI
AndroidManifest.xml 将targetSdkVersion设置成25
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="25" />
app/build.gradle 将targetSdkVersion设置成25defaultConfig { applicationId "com.mimall" minSdkVersion 16 targetSdkVersion 25 versionCode 8 versionName "1.0.8" ndk { abiFilters "armeabi-v7a", "x86" } }
在页面中设置StatusBar<StatusBar backgroundColor="transparent" barStyle={"dark-content"}/>
相关文章推荐
- phonegap(cordova) 入门 9----小知识点总结--iOS 状态栏的字体颜色都设置为白色
- 【Android】状态栏颜色的适配
- 浅谈设置状态栏字体和背景的颜色
- iOS7状态栏字体颜色修改
- iOS如何把所有界面的状态栏的字体颜色都设置为白色
- 更改状态栏里面图标字体颜色
- 设置启动界面ios 8设置状态栏字体颜色
- IOS7设置状态栏字体颜色
- iOS如何把所有界面的状态栏的字体颜色都设置为白色
- ios 适配iPhonex时可以改变状态栏statusBar的背景颜色
- NavigationBar颜色、字体颜色设置、状态栏设置白色
- 设置启动界面ios 8设置状态栏字体颜色
- iOS 状态栏更改颜色、适配等
- Android系统更改状态栏字体颜色
- iOS9.0状态栏字体颜色设置
- 设置状态栏字体颜色;设置导航栏返回按钮的title和返回按钮的颜色
- 关于Android沉浸式状态栏字体颜色和图片背景自适应变化
- 如何修改状态栏Statusbar(SystemUI)图标和字体颜色
- iOS把所有界面的状态栏的字体颜色都设置为白色
- 设置状态栏字体颜色