继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Android 中的 theme 和 style(3)

幕布斯6054654
关注TA
已关注
手记 1258
粉丝 219
获赞 1011

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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP