Android设置状态栏为白底黑字
在开发过程中可能会有将状态栏设置成白底黑字的样式,但是Android系统只有在4.4之上才可以修改状态栏颜色,想要设置状态栏为黑字,只有在Android6.0以上系统或者小米的MIUI V6以上版本或者,魅族的Flyme4.0以上版本才可以设置。
Android6.0以上设置状态栏白底黑字
首先需要通过修改colors.xml文件中的colorPrimaryDark来将状态栏背景设为白色
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#fff</color>
<color name="colorAccent">#FF4081</color>
</resources>
然后在Activity中添加代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
小米的MIUI V6以上版本设置状态栏白底黑字
public static boolean MIUISetStatusBarLightMode(Window window, boolean dark) {
boolean result = false;
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;
} catch (Exception e) {
}
}
return result;
}
魅族的Flyme4.0以上版本设置状态栏白底黑字
public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) {
boolean result = false;
if (window != null) {
try {
WindowManager.LayoutParams lp = window.getAttributes();
Field darkFlag = WindowManager.LayoutParams.class
.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON");
Field meizuFlags = WindowManager.LayoutParams.class
.getDeclaredField("meizuFlags");
darkFlag.setAccessible(true);
meizuFlags.setAccessible(true);
int bit = darkFlag.getInt(null);
int value = meizuFlags.getInt(lp);
if (dark) {
value |= bit;
} else {
value &= ~bit;
}
meizuFlags.setInt(lp, value);
window.setAttributes(lp);
result = true;
} catch (Exception e) {
}
}
return result;
}
个人博客:https://myml666.github.io

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
react native 启动屏 设置 react-native-splash-screen
ios端集成 组件的安装 yarn add react-native-splash-screen react-native link react-native-splash-screen 在 AppDelegate.m中导入 这个类 image.png #import "RNSplashScreen.h" 有的地方是 #import "SplashScreen.h" 这里要注意看下 这个组件的类名是什么 image.png image.png 在AppDelegate.m中导入 这个类 后 开启启动屏 image.png 到这里基本配置算是完了 。 接下来配置启动图 image.png 点进去 image.png image.png 到这里 我们就要拖拽不同尺寸的适配图进去了 Mac的话 可以用这个软件 准备一张1024*1024.png大小的图 这个软件可以生成启动图 还有logo图都可以 image.png 也可以通过这个网址 上传 然后下载下来 ios android logo生成 这个网址只能生成logo图标 生成这些启动图 按照尺寸大小拖拽进去就可以了。 image.png ...
-
下一篇
Android onWindowFocusChanged() 配合 WeakReference 弱引用解决页面间跳转不连贯问题
小菜最近在处理适配方面的问题,今天发现在一些低版本且性能不佳的手机上,冷启动过程中,从 SplashActivity 到 MainActivity 过程中,主页面还没有加载完,启动页先销毁回到手机主页面,过1-2s才进入 MainActivity,中间的间隔时间比较长,用户体验较差。 小菜调试了很久,通过【弱引用 + onWindowFocusChanged】的方式来解决目前的问题,也许不是最好的处理方式,但小菜觉得是相对简单的方式,因此记录一下。 问题原因 小菜的 MainActivity 中需要处理很多业务逻辑以及配置项处理等,在 UI 页面展示前会相对较慢,因此导致前一个 SplashActivity 页面已经销毁但是后一个主 MainActivity 还没有加载出来,导致一个较长的时间间隔。 技术方向 WeakReference 弱引用 弱引用,即在引用对象的同时仍然允许通过垃圾回收来回收该对象。Android 中常用来在非 UI 线程处理图片和 Handler 与 Activity 的交互等。 onWindowFocusChanged() 周期函数 判断窗口变化,在当前 Ac...
相关文章
文章评论
共有0条评论来说两句吧...