Android 中的 theme 和 style(3)

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
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞