Themes
通常定义 Activity 的长什么样
Theme.Material
Theme.Material.Dialog
Theme.Material.Light.DarkActionBar
主题通常是固定以 Theme 点什么这样形式开头,
Overlay themes
ThemeOvery.Material.Light
ThemeOvery.Material.Dark
ThemeOvery.Material.Dialog
主题颜色
colorForeground
colorForegroundInverse
colorBackground
colorBackgroundFloating
通常我们会有前景色和背景色,根据是浅色主题还是深色主题,他们前景色和背景色可能是黑白组合或白黑组合。通常我们不会用简单黑白来分别表示深浅色。
这里我们以 switch 组件为例,switch 组件中包含了多种颜色,我们可以定义 switch 前景色和背景色,其实这些颜色都基本上都是根据黑白的变化而得来的。
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:color="?attr/colorForeground" android:alpha="?attr/disabledAlpha"/> <item android:state_checked="true" android:color="?attr/colorControlActivated"/></selector>
这里定义 switch 不同状态下颜色搭配。在禁用情况根据前景色降低透明度来表示禁用。
textColorPrimary
textColorPrimaryInverse
textColorSecondary
textColorSecondaryInverse
在textColor 文本颜色中,primary 也就是主色用于让用户一目了然,清晰可见可以引起用户注意的文字上。所以就要求文字颜色显眼。Secondary 文字颜色会根据 material 中的规范计算得来,通常是 primary 的 84% 或 56% 的透明度。
<font color=#ff4081>colorAccent</font>
colorPrimary
colorPrimaryDark
colorControlNormal(默认为 textColorSecondary)
colorControlActivated(默认为 colorAccent)
colorAcent 通常用于组件选中的情况,对比强烈,如果深色主题可以考虑用浅色的 colorAccent,colorControlNormal 为默认的组件的颜色,然后组件有 icon 强烈推荐将 icon 设置 colorControlNormal,为了保持 icon 在不同组件中一致性,所以推荐使用 colorControlNormal 设置 icon (图标)的颜色。
作者:zidea
链接:https://www.jianshu.com/p/266127625be8