[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v2qd7l5a-1636430548017)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d1de5811f?imageView2/0/w/1280/h/960/ignore-error/1)]

以上这张图截选自 Android 官方文档,上面提出了 Dark Theme 的三点好处:

  1. 可以帮助我们节省更多的电量

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

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

这得益于 OLED 屏幕的发展,与 LCD 不同 OLED 能够自发光,每个像素点都能发出红绿蓝三色光,而 LCD 则通过其背光层穿透有颜色的薄膜来发出不同的光。这样在暗黑模式下,OLED 就具有天生的优势,只需要关闭黑色区域的显示,就可以达到纯黑效果,而 LCD 的背光层只能发射白光,所以在显示黑色的时候,仍然会有部分光透过颜色薄膜,无法达到纯黑效果,只能达到相对黑的效果。

所以,在如今使用 OLED 屏幕的手机上面,开启暗黑模式会大幅减少手机电量的消耗。关于其中更详细的作用原理以及好处,推荐阅读来自中科院物理所公众号的文章,点击下方查看。

你喜欢“白板黑字”还是“黑板白字”

为你的 An

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》浏览器打开:qq.cn.hn/FTe 免费领取

droid App 适配暗黑模式

适配大概可以分为三部分工作:

  1. 为应用内的背景、文字、图标做适配

  2. 对在设备上显示但并不直接控制的界面进行适配,例如通知、桌面组件

  3. 在应用内为用户提供切换主题的开关选项

适配的方式也分为三种:自动适配、自定义适配、使用 Material Design Components 进行适配,为了方便说明,我这里写了一个实例代码,在没有开启适配前是这个样子的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ePpLCtqA-1636430548053)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d1e36f36b?imageView2/0/w/1280/h/960/ignore-error/1)]

自动适配 Force Dark

Android 10 提供 Force Dark 功能。此功能可让开发者快速实现深色主题背景,只需要在 style.xml 中的应用主题中添加这一行代码 android:forceDarkAllowed=“true” ,就可以完成自动适配。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXnVyHmj-1636430548055)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d1e61a74b?imageView2/0/w/1280/h/960/ignore-error/1)]

如果您的应用采用浅色主题背景,则 Force Dark 会分析应用的每个视图,并在相应视图在屏幕上显示之前,自动应用深色主题背景。当然这里的适配工作全是系统自己做的,所以作为开发者你需要进行详细的测试,确保没有错误的地方。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9cqM7G8G-1636430548056)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d1e3e6db6?imageslim)]

从上面的截图来看,自动适配的效果很不错,关于自动适配的原理,这里有一篇文章对此进行了详细的说明,文章地址在最后。

Android Q 深色模式(Dark Mode)源码解析

自定义适配

自定义适配的关键在于,避免一切硬编码的颜色值,建立 light 、night 两份 colors,通过定义相同的名字,在不同模式下显示不同的颜色。

1. 确保当前 App 使用的主题继承自 AppCompat 或 MaterialComponents,并将之前默认的 Light 主题修改为 DayNight

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QoE07Bou-1636430548057)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d1e835532?imageView2/0/w/1280/h/960/ignore-error/1)]

2.为 Dark Mode 定义 colors

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ojFYGxK-1636430548058)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d4724882a?imageView2/0/w/1280/h/960/ignore-error/1)]

新建完成之后我们的 values 下会有两份 colors 文件,工程结构如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pf7cLfBG-1636430548059)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d49589859?imageView2/0/w/1280/h/960/ignore-error/1)]

3. 根据需求对不同模式下相同名字的颜色值做适配

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AEcZqQ8o-1636430548060)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d4baebac7?imageView2/0/w/1280/h/960/ignore-error/1)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4igndhxW-1636430548061)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d473806be?imageView2/0/w/1280/h/960/ignore-error/1)]

这里推荐使用颜色本身的场景意义来命名,例如上图中的 colorBackground 表示背景颜色,colorOnError 表示在错误状态上,文字的显示颜色,在控件需要颜色的地方,直接通过 @color/colorXXX 来使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-frcdqkcB-1636430548062)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d4cdce1f8?imageView2/0/w/1280/h/960/ignore-error/1)]

自定义适配完全可以达到任何我们想要的效果,相比自动适配,这里我对状态栏、错误颜色以及强调色进行了微调。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bKq2anu5-1636430548063)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d5c17d19b?imageslim)]

使用 Material Design Components 进行适配

Material Design Components 不仅仅包含了各式各样的组件,还完善了 Material Design 的规范,相比组件来说更重要的是 MD 设计规范。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bya0aI3p-1636430548064)(https://user-gold-cdn.xitu.io/2020/3/3/1709ff5d6847d352?imageView2/0/w/1280/h/960/ignore-error/1)]

上图为 Material Design 的官网,在设计一览中,详细制定了各种规范,例如颜色系统该如何设计、阴影的原理和规范、字体的规范、图标该如何选择、交互效果该怎样设计等等。

我个人来说是非常喜欢 Material Design ,之后会计划在这个公众号上面为大家详细的介绍一下Material Design 到底是怎样的,相信很多人都知道 Material Design 但真正读过它的文档,以及认真了解过其设计原理的人,应该寥寥无几。
号上面为大家详细的介绍一下Material Design 到底是怎样的,相信很多人都知道 Material Design 但真正读过它的文档,以及认真了解过其设计原理的人,应该寥寥无几。

Android App Dark Theme(暗黑模式)适配指南,android实战mysql相关推荐

  1. Android App Dark Theme(暗黑模式)适配指南

    在 2019 年的 Google I/O 和 Apple WWDC 上,新露面的 Android 10 和 iOS 13 都宣布将支持 Dark Theme 也就是我们常说的暗黑模式,并提供相关 AP ...

  2. Android 暗黑模式适配

    Android 暗黑模式适配 不爱废话直接上菜. 第一种适配方式: 1.1 直接修改APP主题,values/styles.xml 如下: <style name="AppTheme& ...

  3. 【Web技术】935- 深色模式适配指南

    ????  这是第 65 篇不掺水的原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧- 本文首发于政采云前端团队博客:深色模式适配指南 https://www.zoo.team/art ...

  4. 为什么 APP 纷纷开发“暗黑模式”?优酷最佳实践总结

    简介: < 优酷 APP 全量支持"暗黑模式" 设计与技术完整总结>正式发布-- ​ 一.缘起 随着iOS 13和Android 10的正式发布,一个名词"暗 ...

  5. iOS 暗黑模式适配(项目实战篇)

    通过上面两篇文章,我们知道了暗黑模式怎么去适配,那么如何结合到真实的项目场景中去呢? 适配目标 在项目适配之前,先来梳理一下需要适配的东西,以及可能预见的问题. 一.下图是我们单个App的控件适配目标 ...

  6. android物联网开发技术架构,Android 相关七种 CPU 架构适配,android七种

    Android 相关七种 CPU 架构适配,android七种 转载请注明出处:http://blog.csdn.net/kester_/article/details/71055901 NDK 开发 ...

  7. Android 适配Dark Theme(暗黑模式),Android高级工程师必备知识

    Android 10 提供 Force Dark 功能.此功能可让开发者快速实现深色主题背景,只需要在 style.xml 中的应用主题中添加这一行代码android:forceDarkAllowed ...

  8. 百度APP iOS暗黑模式适配的完美解决方案

    原创:liushaohua 百度APP技术团队 一 背景 在2019WWDC的开场演讲中,苹果公布了即将推出的iOS13 DarkMode的新特性.此新特性不仅可以在夜晚保护视力,而且对于使用OLED ...

  9. Android暗黑模式适配

    前言 最近这两年,用户关于支持暗黑模式的呼声越来越高.而友商也基本都上了暗黑模式,于是老板也要求我们年前得上,可是工作量太大了,200多个页面,一个人整,实在是没法年前发,就拖到了年后上. 成果 1. ...

最新文章

  1. 从3D人脸到自动驾驶,CVPR2020十个顶级开源数据集
  2. oracle的结构是什么,Oracle的软件结构是什么呢?
  3. [一道搜狗输入法的面试题]C++转换构造函数和类型转换函数
  4. 对 makefile 中 $(MAKE) 的学习体会
  5. intellij出现dependency ‘xxx‘not found
  6. 办公技巧:Excel下拉菜单小技巧,赶紧学一下!
  7. 结构与算法(04):排序规则与查找算法
  8. html选择按钮select,Html选择使用select来改变一个按钮的链接使用Javascript
  9. Spring Boot系列教程四:配置文件详解properties
  10. 如何默认选择一个单选按钮? [重复]
  11. tensorflow分类的loss函数_Tensorflow Keras的loss函数总结
  12. 计算机基础ppt_「考前秘笈」2020年3月份计算机二级MS-office考试重点
  13. Cisco Packet Tracer 实验
  14. Java开发就业前景,2017java开发就业前景分析
  15. led灯光衰怎么解决_led灯光衰一般多少为正常?
  16. Better than better,白山EC2.0发布
  17. burg算法 matlab,基于burg算法的谱估计研究及其matlab实现.doc
  18. 自动化运维之k8s——Helm、普罗米修斯、EFK日志管理、k8s高可用集群(未完待续)
  19. Zend Studio 10.6.0正式版注册破解
  20. 自动控制原理7.7---离散系统的数字校正

热门文章

  1. 人人5功盖世时候,我在支持国产
  2. mac pro M1(ARM)安装:centos8.0虚拟机
  3. petalinux 1144文档 安装流程
  4. 【计算思维题】少儿编程 蓝桥杯青少组计算思维题真题及解析第2套
  5. canvas实现粒子特效
  6. 如何查看MySQL的表空间
  7. 带疑问的歌词有哪些_带有(我)字的歌词有哪些
  8. ubuntu 16.04 gtx1060 显卡安装
  9. R语言27-Prosper 贷款数据分析3
  10. CentOS 官网镜像最新下载地址