这是一个莫奈取色的介绍,我第一次写介绍类文章,可能不是很好,有问题还望在评论纠正
目录
1.什么是莫奈取色
2.莫奈取色的原理
3.如何给自己的软件添加莫奈取色?
4.莫奈取色常见问题
~~~~~~~~~~~~~~~~~~~
1.什么是莫奈取色
所谓莫奈取色,又称动态颜色,是安卓12上引入的一个新特性,如果你曾经刷过类原生系统,你会发现大部分系统软件的颜色会随壁纸的变化而变化!
简单来说,就是主题取色引擎会自动从设置的壁纸中选择数个颜色,并让用户手动选择其中一个,围绕此来创建整个系统级的 UI 主题。
比如,我这里准备了一张壁纸,系统就会随着这张壁纸来决定整体软件的取色
这里就是系统通过这张壁纸所提取的颜色,安卓系统会通过这些颜色来为软件ui配色,例如shizuku
~~~~~~~~~~~~~~~~~~~
2.莫奈取色的原理
其实原理很简单
首先,从用户的壁纸上提取一种源颜色,并推算出5中关键颜色,比如primary、Secondary、Tertiary等。
然后,将每个关键颜色转化为由13种色调组成的调色板,且每种色调会生成对应的浅、深色方案。
最后,通过系统Token将从壁纸提取的颜色方案和App Theme关联起来,在DynamicColorsActivityLifecycleCallbacks中判断是否需要覆盖。
(发言千百度,原地址:https://www.cnblogs.com/kingwz/p/17300537.html)
值得注意的是,莫奈取色会从壁纸中提前两套主要配色方案以及一些不重要的额外配色方案。主要配色方案用于适配深色模式和浅色模式
还是前面的壁纸,系统就给出了两张取色方案
深色方案
浅色方案
主要颜色翻译
Primary:控件背景颜色
On Primary:控件文字颜色
Primary Container:背景色
Inverse Primary:更加显眼的颜色
~~~~~~~~~~~~~~~~~~~
3.如何给自己的软件添加莫奈取色?
引入方法:https://m3.material.io/develop/android/mdc-android(纯英文警告!)
需要给软件修改版本Sdk版本到31及以上
取色建议:https://m3.material.io/styles/color/the-color-system/color-roles(纯英文警告!)
~~~~~~~~~~~~~~~~~~~
4.莫奈取色常见问题
Q:如果一个软件支持莫奈取色,那是不是安卓12级以下系统就用不了?
A:其实不一定,大部分具有莫取色的软件都会对旧版系统进行适配,通过区分安卓版本的方法来决定是否使用莫奈取色主题
Q:为啥我用别人修改出来的莫奈取色软件在旧版本系统会闪退?
A:那是因为本身不支持莫奈取色的软件,要添加莫奈取色的需要暴力替换原来的颜色,安卓12以下系统本身就不支持莫奈取色,因此系统是无法识别出莫奈有关的代码的,这也就会造成闪退
Q:我也想学习怎么给软件莫奈取色,我应该怎么做?
A:你可以参考一下这篇文章https://bbs.binmt.cc/thread-137206-1-1.html