根据手机品牌设置状态栏

news/2025/2/11 8:53:53/

**

在BaseActivity调用这个方法

**

ChangeStatusBarCompat(false, 0);

实现如下

  protected void ChangeStatusBarCompat(boolean isDark, int bgColor) {if (Configure.barHeight > 0 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT /*&& Build.VERSION.SDK_INT <Build.VERSION_CODES.M*/) {//通过手机品牌判断显示的状态switch (getBrand()) {case 1://  MIUIBrandCustomizationUtils.setMIUIStatusBarColor(this, isDark);StatusBarCompat.compat(this, ContextCompat.getColor(this, R.color.color_trans_white));break;case 2://魅族BrandCustomizationUtils.setFlyMeStatusBarColor(this, isDark);StatusBarCompat.compat(this, ContextCompat.getColor(this, R.color.color_trans_white));break;default://其他if (bgColor != -1)StatusBarCompat.compat(this, bgColor);elseStatusBarCompat.compat(this, ContextCompat.getColor(this, R.color.color_trans_black));break;}}}

**

获取手机品牌

**

 /*** API<4.4不用管沉浸式, 4.4~6.0* M>API>4.4 判断手机型品牌 可控则通过反射 来改变状态栏颜色,不可控则改变状态栏背景色* API>M*/private int getBrand() {String MODEL = Build.MODEL;if (MODEL == null || MODEL.length() == 0)return 0;if (MODEL.toLowerCase().contains("mi")) {return 1;} else if (MODEL.toLowerCase().contains("meizu") || MODEL.toLowerCase().contains("mx")) {return 2;} else {return 0;}}

**

自定义品牌工具类

**

  public class BrandCustomizationUtils {/*** setDarkStatusBar on FlyMe* 设置状态栏字体为暗色 仅魅族有效* 黑底白字 -> 白底黑字*/public static void setFlyMeStatusBarColor(Activity activity, boolean isDark) {WindowManager.LayoutParams lp = activity.getWindow().getAttributes();try {Class<?> instance = Class.forName("android.view.WindowManager$LayoutParams");int value = instance.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON").getInt(lp);Field field = instance.getDeclaredField("meizuFlags");field.setAccessible(true);int origin = field.getInt(lp);if (isDark) {field.set(lp, origin | value);} else {field.set(lp, (~value) & origin);}} catch (Exception e) {e.printStackTrace();}}public static void setMIUIStatusBarColor(Activity context, boolean isDark) {Window window = context.getWindow();Class clazz = window.getClass();try {int tranceFlag = 0;int darkModeFlag = 0;Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_TRANSPARENT");tranceFlag = field.getInt(layoutParams);field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");darkModeFlag = field.getInt(layoutParams);Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);if (isDark) {extraFlagField.invoke(window, tranceFlag | darkModeFlag, tranceFlag | darkModeFlag);} else {extraFlagField.invoke(window, 0, darkModeFlag);}} catch (Exception e) {e.printStackTrace();}}
}

这个工具类中只有MIUI和魅族,后续还可以增加其他品牌


http://www.ppmy.cn/news/125022.html

相关文章

android 手机型号 命名规则,自己整理:各大品牌安卓手机的型号命名规律

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 索爱/索尼&#xff1a;字母T/K两位数i 第一个字母表示手机尺寸&#xff0c;L是4寸以上&#xff0c;M是3.7-4寸&#xff0c;S是3.5寸以下 第二个字母&#xff0c;T是直板&#xff0c;K是滑盖 两位数象征手机的性能&#xff0c;数字…

YOLOv8 改进 GhostNet 主干系列:原创改进高效 GhostNet 网络,华为出品,打造全新检测器

💡本篇内容:YOLOvYOLOv8改进GhostNet主干系列:高效结合GhostNet网络,华为出品,打造强力检测器: GhostNet 重点:🔥🔥🔥YOLOv8 使用这个 创新点 在数据集改进做实验:即插即用 GhostNet 💡🚀🚀🚀本博客 内附的改进源代码改进,按步骤操作运行改进后的代…

什么软件测试手机亮度,手机屏幕坏点检测方法有哪些【详细介绍】

手机屏幕坏点检测方法有哪些? 随着手机彩屏的逐渐普遍&#xff0c;手机屏幕的材质也越来越显得重要。手机的彩色屏幕因为LCD品质和研发技术不同而有所差异&#xff0c;其种类大致有TFT、TFD、UFB、STN和OLED几种。 下面&#xff0c;我们就来看看如何查看屏幕是否完好。 工具&a…

机器人扫地机什么牌子好?

最近几年&#xff0c;随着科技的快速发展&#xff0c;智能产品种类也越来越多&#xff0c;之前很多传统的产品都贴上了智能的标签&#xff0c;家居类产品更时这样&#xff0c;比如智能电视&#xff0c;智能手机&#xff0c;智能冰箱等。俗话说“懒人创造世界”&#xff0c;人们…

回收手机一般用什么软件测试,回收二手手机怎么进行硬件检测?

原标题:回收二手手机怎么进行硬件检测? 二手手机怎样检测硬件?什么软件可以检测出硬件是不是翻新二手?iPhone/苹果二手手机如何检测?今天为大家一一解答: 一、二手手机怎么检测硬件 1、购买渠道确认: 行货: (1)行货内一般不贴店标,如果有店标,需要判断店标的位置:在…

其它品牌手机可以刷鸿蒙,定了,鸿蒙系统4月起开始搭载智能手机,其它品牌手机能支持吗?...

原标题:定了,鸿蒙系统4月起开始搭载智能手机,其它品牌手机能支持吗? 昨天,在华为Mate X2折叠机发布会上,余承东正式宣布了4月份起鸿蒙操作系统就将开始在智能手机上搭载。这将是个历史性的里程碑,因为鸿蒙操作系统不但是属于咱们中国自主研发的一款全新操作系统,而且是…

JS判断手机品牌

用正则判断手机品牌 var userAgent navigator.userAgent;if(userAgent.match(/vivo/!)){ console.log("这是vivo手机") }else if(userAgent.match(/samsung/i)){ console.log("这是三星手机") }else if(userAgent.match(/huawei/i)){ cosole.log("这…

android一键换手机,不同品牌手机一键换机教程

我们正处于一个数码产品更新换代非常快速的时代&#xff0c;很多消费者会紧跟时代潮流&#xff0c;经常更换新手机&#xff0c;但是更换手机之后我们通常需要将旧手机里的数据进行转移&#xff0c;不同品牌之间的手机怎么进行一键换机呢&#xff1f; 以安卓手机更换苹果手机转移…