Android Dark Theme - 在应用程序上实现深色主题的最佳方式

Posted

技术标签:

【中文标题】Android Dark Theme - 在应用程序上实现深色主题的最佳方式【英文标题】:Android Dark Theme - Best way to implements dark theme on application 【发布时间】:2020-03-13 01:48:18 【问题描述】:

我使用styles.xml 中声明的 2 个不同主题为我的应用程序添加了深色主题支持。

在官方 android 开发者网站上:

为了支持深色主题,您必须设置应用的主题(通常 在 res/values/styles.xml 中找到)从 DayNight 主题继承

这就是我所做的。我还创建了colors-night.xml 以避免修改无法通过编码在styles.xml 中修改的颜色,这也有效:当从设备系统激活暗模式时,颜色会自动更改。

此时,我想知道哪种是实现深色主题的最佳方式:创建 2 个不同的主题,使用 colors-night(和 drawable-night)还是这两种方式的组合?

【问题讨论】:

【参考方案1】:

首先是下面的 youtube 视频,它几乎可以告诉您当前关于主题的最佳做法是什么。

https://www.youtube.com/watch?v=Owkf8DhAOSo

他们谈到将您的样式拆分为

themes.xml -> 主题相关样式 styles.xml -> 组件相关样式 type.xml -> 文本外观样式

你所有的颜色都应该在一个位于values的colors.xml中。

然后您将拥有以下结构:

values/themes.xml values/colors.xml 值/type.xml values/styles.xml values-night/themes.xml

在实践中,我发现在一个colors.xml 中包含所有颜色仍然很困难。我仍然创建values-night/colors.xml,因为某些颜色不一定属于一种风格。

在这个 repo 中查看实践。观察者,谷歌自己并没有遵循他们的观点,只使用一个colors.xml

https://github.com/material-components/material-components-android/tree/master/material-theme-builder

【讨论】:

哈哈,你不敢相信,我在新岗位上的第一个故事就是实现暗黑主题!我跟着这个很容易去:github.com/android/user-interface-samples/tree/master/DarkTheme

以上是关于Android Dark Theme - 在应用程序上实现深色主题的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

[daily]在dark theme下,启动wps的方法

配置故事书文档插件以显示 theme.dark

css vuejs.org dark theme.css

Dark theme for Texstudio - TeX - LaTeX

Android Dark 主题反转矢量可绘制对象的颜色

less使用手记 主题切换 全局import less