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 - 在应用程序上实现深色主题的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章