Android 设置app深色、浅色、跟随系统

Android深色模式适配

我们需要再用户设置时候,记录下来,用户的设置,等app再次启动时候,获取之前设置,重新设置

    public static void setThemeMode() {int themeModeType = SpUtils.getThemeModeType();if (themeModeType == 1) {//1:浅色AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);} else if (themeModeType == 2) {// 2:深色AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);} else {//跟随系统AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);}}

1、设置单个Activity

   /*** 设置单个Activity 深色、浅色、跟随系统** @param appCompatDelegate Activity AppCompatDelegate* @param themeModeType  0:跟随系统 1:浅色 2:深色*/public static void setThemeModeByActivity(AppCompatDelegate appCompatDelegate, int themeModeType) {if (appCompatDelegate != null) {switch (themeModeType) {case 0:appCompatDelegate.setLocalNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);break;case 1:appCompatDelegate.setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);break;case 2:appCompatDelegate.setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);break;}}}

2、获取当前Activity是否开启深色

   /*** 通过Activity Resources 获取当前是否开启深色模式** @param object* @return*/public static boolean nightModeByUiResources(Object object) {if (object != null) {if (object instanceof Activity) {int currentNightMode = ((Activity) object).getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;return currentNightMode == Configuration.UI_MODE_NIGHT_YES;} else if (object instanceof androidx.fragment.app.Fragment) {int currentNightMode = ((Fragment) object).getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;return currentNightMode == Configuration.UI_MODE_NIGHT_YES;} else if (object instanceof android.app.Fragment) {int currentNightMode = ((android.app.Fragment) object).getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;return currentNightMode == Configuration.UI_MODE_NIGHT_YES;}}return false;}

3、webView设置

   /*** 设置webView 深色或者浅色模式** @param activity* @param webSetting*/public static void setWebViewNight(Activity activity, WebSettings webSetting) {if (activity == null || webSetting == null) {return;}setWebViewNight(webSetting, nightModeByUiResources(activity));}/*** 设置webView 暗黑模式** @param webSetting* @param nightMode true:深色  false:浅色*/public static void setWebViewNight(WebSettings webSetting, boolean nightMode) {boolean featureSupported = false;try {featureSupported = WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK);} catch (AbstractMethodError e) {e.printStackTrace();}if (featureSupported) {if (nightMode) {//启用 webview 的强制黑暗模式,这意味着 webview 的内容将始终以黑暗主题呈现WebSettingsCompat.setForceDark(webSetting, WebSettingsCompat.FORCE_DARK_ON);} else {//禁用 webview 的强制暗模式,这意味着 webview 的内容将按原样呈现WebSettingsCompat.setForceDark(webSetting, WebSettingsCompat.FORCE_DARK_OFF);}}}

但是h5页面需要做特别判断才能拿到webView深浅模式

@media (prefers-color-scheme: dark) {这里是样式代码}

4、深色浅色切换时候,重启app

  /*** 浅色和深色模式切换,杀死进程,重新打开app** @param activity*/public static void restartApp(Activity activity) {Intent intent = activity.getPackageManager().getLaunchIntentForPackage(activity.getPackageName());if (intent != null) {intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);activity.startActivity(intent);android.os.Process.killProcess(android.os.Process.myPid());}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/61331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

环境安装:rpm安装jdk上线项目

Tomcat安装 解析域名 购买域名并配置 安装Docker yum 卸载以前装过的docker

Seaborn数据可视化(四)

目录 1.绘制箱线图 2.绘制小提琴图 3.绘制多面板图 4.绘制等高线图 5.绘制热力图 1.绘制箱线图 import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据(例如,使用seaborn自带的数据集) tips sns.load_dataset("t…

算法通关村第十七关——柠檬水找零

贪心,顾名思义,就是挑价值最大的 如果直接挑价值最大的,这样不一定能够达到最优解,因为最终价值多少还要取决于背包容量。 贪心算法解决0-1背包问题的基本思路是:按照物品的单位价值(即价值与重量的比值&…

上海市青少年算法2023年7月月赛(丙组)

T1先行后列 题目描述 从 1 开始的 nm 个整数按照先行后列的规律排列如下: 给定 n 与 m,再给定一个数字 c,请输出 c 所在的行数与列数。 输入格式 第一行:两个整数表示 n 与 m 第二行:一个整数表示 c 输出格式 两个整数:表示 c 所在的行数与列数。 数据范围 1≤n,m≤10000…

[SpringBoot3]远程访问@HttpExchange

六、远程访问HttpExchange[SpringBoot3] 远程访问是开发的常用技术,一个应用能够访问其他应用的功能。SpringBoot提供了多种远程访问的技术。基于HTTP协议的远程访问是最广泛的。SpringBoot中定义接口提供HTTP服务。生成的代理对象实现此接口,代理对象实…

MIMIC-IV数据提取教程

一、获取MIMIC-IV数据库 MIMIC-IV数据库需要申请权限,具体怎么申请我之前的博客发的有:MIMIC数据库申请流程 以最新的MIMIC-IV 2.2版本为例,首先打开页面拖动到最底端:https://physionet.org/content/mimiciv/2.2/ 直接下载解压下来&#x…

linux下安装Mycat

1 官网下载mycat 官方网站: 上海云业网络科技有限公司http://www.mycat.org.cn/ github地址: MyCATApache GitHubMyCATApache has 34 repositories available. Follow their code on GitHub.https://github.com/MyCATApache 2 Mycat安装 1 把MyCat…

菜鸟教程《Python 3 教程》笔记(13):迭代器与生成器

菜鸟教程《Python 3 教程》笔记(13) 13 迭代器与生成器13.1 迭代器13.1.1 创建一个迭代器13.1.2 StopIteration 13.2 生成器13.3 yield 使用浅析13.3.1 通过 iterable 对象来迭代13.3.2 使用 isgeneratorfunction 判断13.3.3 类的定义和类的实例13.3.4 r…

基于材料生成算法优化的BP神经网络(预测应用) - 附代码

基于材料生成算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于材料生成算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.材料生成优化BP神经网络2.1 BP神经网络参数设置2.2 材料生成算法应用 4.测试结果:5…

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测 目录 时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测&a…

C++--完全背包问题

1.【模板】完全背包_牛客题霸_牛客网 你有一个背包,最多能容纳的体积是V。 现在有n种物品,每种物品有任意多个,第i种物品的体积为vivi​ ,价值为wiwi​。 (1)求这个背包至多能装多大价值的物品? &#xff0…

机器学习基础12-Pipeline实现自动化流程处理(基于印第安糖尿病Pima 数据集)

有一些标准的流程可以实现对机器学习问题的自动化处理,在 scikitlearn 中通过Pipeline来定义和自动化运行这些流程。本节就将介绍如何通过Pipeline实现自动化流程处理。 如何通过Pipeline来最小化数据缺失。如何构建数据准备和生成模型的Pipeline。如何构建特征选择…

C#调用barTender打印标签示例

使用的电脑需要先安装BarTender 我封装成一个类 using System; using System.Windows.Forms;namespace FT_Tools {public class SysContext{public static BarTender.Application btapp new BarTender.Application();public static BarTender.Format btFormat;public void Q…

200 套基于Java开发的Java毕业设计实战项目(含源码+说明文档)

文章目录 简介前言第一部分第二部分部分截图源码咨询 简介 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 前言 对于java方向的毕业设计题目选题&#xf…

2024河南光伏展,河南郑州太阳能光伏展,郑州光伏产业展览会

2024第四届中国(郑州)太阳能光伏及储能产业展览会   时间:2024年2月26-28日 地点:郑州.中原国际博览中心 在过去的几年中,太阳能光伏及储能技术得到了快速的发展和广泛的应用。为了进一步推动这一产业的发展和进步&…

Densenet模型详解

模型介绍 DenseNet的主要思想是密集连接,它在卷积神经网络(CNN)中引入了密集块(Dense Block),在这些块中,每个层都与前面所有层直接连接。这种设计可以让信息更快速地传播,有助于解…

实力征服每寸版图|昂首资本Anzo Capital狂揽“年度最佳经纪商“和“最佳青年导师”双料大奖

棉兰老岛交易者博览会在Tibungco 的 RTC-KorPhil 职业培训中心多功能厅举办。在本次博览会上,Anzo Capital 昂首资本脱颖而出斩获“2023年度最佳经纪商”,Anzo Capital 官方金融教育专家Joseph Lejarde斩获“最佳青年导师”双料大奖。 棉兰老岛交易者…

zabbix语言无法选择中文--zabbix安装配置中文

You are not able to choose some of the languages, because locales for them are not installed on the web server. 1、安装wget yum -y install wget 2、下载中文中文字体并配置 wget https://github.com/echohn/zabbix-zh_CN/archive/master.zip yum -y install unzip un…

Go学习第十天

打印报错堆栈信息 安装errors包 go get github.com/pkg/errors 具体使用 // 新生成一个错误, 带堆栈信息 func New(message string) error//只附加新的信息 func WithMessage(err error, message string) error//只附加调用堆栈信息 func WithStack(err error) error//同时附…

【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容

文章目录 前言一、下载二、使用步骤1.引入样式2.html代码 总结 前言 提示:这里可以添加本文要记录的大概内容: vue后台框架,若依系统里有一个富文本编辑器,效果如下 在package.json里面查看,发现插件名叫quill 插件的…