我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android深色模式适配的方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android深色模式适配的方法是什么

本篇内容主要讲解“Android深色模式适配的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android深色模式适配的方法是什么”吧!

Android深色模式适配的方法是什么

Android深色模式适配的方法是什么

Android 深色模式适配

深色主题背景

Android 10 (API 级别 29) 及更高版本中提供深色主题背景。深色主题背景具有诸多优势:

  • 可大幅减少耗电量(具体取决于设备的屏幕技术)。

  • 为弱视以及对强光敏感的用户提高可视性。

  • 让所有人都可以在光线较暗的环境中更轻松地使用设备。

深色主题背景同时适用于 Android 系统界面和在设备上运行的应用。

在应用中支持深色主题背景

如要支持深色主题背景,必须将应用的主题背景(通常可在 res/values/styles.xml 中找到)设置为继承 DayNight 主题背景:

<style name="AppTheme" parent="Theme.AppCompat.DayNight">

或者使用 MaterialComponent 的深色主题背景:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">

这会将应用的主要主题背景与系统控制的夜间模式标记相关联,并将应用的默认主题背景设置为深色主题背景(如果已启用)。

主题背景和样式

主题背景和样式应避免使用旨在于浅色主题背景下使用的硬编码颜色或图标。应改用主题背景属性(首选)或适合在夜间使用的资源。

以下是需要了解的两个最重要的主题背景属性:

  • ?android:attr/textColorPrimary 这是一种通用型文本颜色。它在浅色主题背景下接近于黑色,在深色主题背景下接近于白色。该颜色包含一个停用状态。

  • ?attr/colorControlNormal 一种通用图标颜色。该颜色包含一个停用状态。

Force Dark

Android 10 提供 Force Dark 功能。此功能可让开发者快速实现深色主题背景,而无需明确设置 DayNight 主题背景。

如果应用采用浅色主题背景,则 Force Dark 会分析应用的每个视图,并在相应视图在屏幕上显示之前,自动应用深色主题背景。有些开发者会混合使用 Force Dark 和本机实现,以缩短实现深色主题背景所需的时间。

如果应用选择启用 Force Dark,可以在其主题背景中设置 android:forceDarkAllowed="true"。此属性会在所有系统及 AndroidX 提供的浅色主题背景(例如 Theme.Material.Light)上设置。

<resources>    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">        <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="android:colorPrimary">@color/colorPrimary</item>        <item name="android:colorAccent">@color/colorAccent</item>        <item name="android:background">@color/colorPrimary</item>        <item name="windowNoTitle">true</item><!-- 启用 Force Dark --><item name="android:forceDarkAllowed">true</item>    </style></resources>

如果应用使用深色主题背景(例如Theme.Material),则系统不会应用 Force Dark。同样,如果应用的主题背景继承自 DayNight 主题背景,则系统不会应用 Force Dark,因为会自动切换主题背景。

在视图上停用 Force Dark

您可以通过 android:forceDarkAllowed 布局属性或 setForceDarkAllowed() 在特定视图上控制 Force Dark。

Android 10以上

创建项目SDK选择API29: Android 10以上,res目录下会分别创建浅色和深色的主题样式。

Android深色模式适配的方法是什么

其中values/themes.xml存放浅色模式主题,values-night/themes.xml存放深色模式主题。

如要切换主题背景,可以调用 AppCompatDelegate.setDefaultNightMode()

配置变更

当应用的主题背景发生更改(无论是通过系统设置还是 AppCompat)时,会触发 uiMode 配置变更。这意味着系统会自动重新创建 Activity。

在某些情况下,可能希望应用处理配置变更。例如,可能希望延迟配置变更时间,因为设备正在播放视频。

应用可以声明,每个 Activity 都可以处理 uiMode 配置变更,以自行处理深色主题背景的实现:

<activity    android:name=".MyActivity"    android:configChanges="uiMode" />

当某个 Activity 声明它会处理配置变更时,系统会在出现主题背景变更时调用该 Activity 的 onConfigurationChanged() 方法。

如要检查当前采用的是哪种主题背景,应用可以运行如下代码:

@Overridepublic void onConfigurationChanged(@NonNull Configuration newConfig) {    super.onConfigurationChanged(newConfig);    int currentNightMode = newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK;    switch (currentNightMode) {        case Configuration.UI_MODE_NIGHT_NO:            // Night mode is not active, we're using the light theme            Log.i(TAG, "onConfigurationChanged: light");            break;        case Configuration.UI_MODE_NIGHT_YES:            // Night mode is active, we're using dark theme            Log.i(TAG, "onConfigurationChanged: dark");            break;        default:            break;    }}

到此,相信大家对“Android深色模式适配的方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android深色模式适配的方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android深色模式适配的方法是什么

本篇内容主要讲解“Android深色模式适配的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android深色模式适配的方法是什么”吧!Android 深色模式适配深色主题背景Andr
2023-07-05

android深色模式适配怎么实现

要实现Android深色模式适配,可以按照以下步骤进行:1. 在AndroidManifest.xml文件中设置主题样式为DayNight主题。例如:```xml...android:theme="@style/AppTheme">...`
2023-09-08

Android深色模式适配适配过程详解

这篇文章主要介绍了Android深色模式适配适配过程,深色模式其实就是我们经常讲到的夜间模式,与白天模式我们需要的屏幕高亮不同,晚上更加需要的是柔和的光,有助于减少手机对眼睛的伤害
2023-05-14

Android界面一键变灰开发深色适配模式编程的方法

这篇文章主要介绍“Android界面一键变灰开发深色适配模式编程的方法”,在日常操作中,相信很多人在Android界面一键变灰开发深色适配模式编程的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Andro
2023-06-30

iOS13适配深色模式(Dark Mode)的实现

好像大概也许是一年前, Mac OS系统发布了深色模式外观, 看着挺刺激, 时至今日用着也还挺爽的终于, 随着iPhone11等新手机的发售, iOS 13系统也正式发布了, 伴随着手机版的深色模式也出现在了大众视野我们这些iOS程序猿也有
2022-05-19

android精确适配的方法是什么

Android精确适配的方法有以下几种:使用ConstraintLayout布局:ConstraintLayout是Android官方推荐的布局方式,它可以根据不同屏幕尺寸和设备方向自动调整布局,适配不同的屏幕。使用尺寸单位:在布局文件中使
2023-10-26

java中适配器模式的原理是什么

java中适配器模式的原理是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端
2023-06-14

python commands模块的适用方式是什么

这篇文章给大家分享的是有关python commands模块的适用方式是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。commands模块的适用commands模块是python的内置模块,他共有三个函数,使
2023-06-29

SpringMVC适配器模式作用范围是什么

这篇文章主要介绍“SpringMVC适配器模式作用范围是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringMVC适配器模式作用范围是什么”文章能帮助大家解决问题。HandlerAdapt
2023-07-06

web设计模式的适配器模式有什么用

本文小编为大家详细介绍“web设计模式的适配器模式有什么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“web设计模式的适配器模式有什么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。意图将一个类的接口转换成客
2023-06-19

RGB颜色模式指的是什么

这篇文章主要介绍了RGB颜色模式指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇RGB颜色模式指的是什么文章都会有所收获,下面我们一起来看看吧。RGB颜色模式是一种屏幕显示
2023-03-01

Java项目中适配器模式的原理是什么

Java项目中适配器模式的原理是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。适配器模式是把一个类的接口适配成用户所期待的,使得原本由于接口不兼容而不能一起工作的一些类可以
2023-05-31

Prototype模式的适用场景是什么

本篇内容介绍了“Prototype模式的适用场景是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Prototype模式的适用场景为:当一
2023-06-19

elasticsearch模糊匹配的方法是什么

在Elasticsearch中,可以使用模糊匹配实现模糊搜索。以下是几种常用的模糊匹配方法:1. 通配符查询(Wildcard Query):使用通配符(*和?)进行模糊匹配。例如,使用"el*icse*ch"可以匹配到"elasticse
2023-10-11

android studio配置sdk的方法是什么

要配置SDK,请按照以下步骤操作:1. 下载并安装Android Studio:首先,您需要从官方网站(https://developer.android.com/studio)下载并安装Android Studio。根据您的操作系统选择适
2023-08-31

BUILDER模式的实现方法是什么

本篇内容主要讲解“BUILDER模式的实现方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“BUILDER模式的实现方法是什么”吧!效果它将构造代码和表示代码分开Builder模式将构建对
2023-06-19

css3中新增加的颜色模式是什么

这篇文章主要介绍css3中新增加的颜色模式是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!css新增了3种颜色模式:1、RGBA模式,是在RGB模式上新增了Alpha透明度,例“rgba(255,0,0,0.5)
2023-06-14

Scala中的模式匹配是什么

这篇文章主要介绍Scala中的模式匹配是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性,Sca
2023-06-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录