主题色

2019-03-29  本文已影响0人  waiwaaa

系统生成的主题

<style name="Theme.App" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Main theme colors -->
    <!--   your app branding color for the app bar -->
    <item name="colorPrimary">@color/theme_primary</item>
    <!--   darker variant for the status bar and contextual app bars -->
    <item name="colorPrimaryDark">@color/theme_primary_dark</item>
    <!--   theme UI controls like checkboxes and text fields -->
    <item name="colorAccent">@color/theme_color_accent</item>
</style>
102327334708131.png

图上的各参数都可以直接配置到主题中生效。其中colorPrimaryDark仅在Lollipop以上机器生效。

colorAccent解析
colorAccent会改变光标颜色、checkbox背景色等。
基本上可以理解为控件的主色调。


colorAccent.png

Material中还有一个重要的特性是阴影的设置和波纹效果的实现,这里来粗略说明一下:

Elevation - 设置阴影
v21以后在View的xml中使用android:elevation属性,或者在代码中使用View的setElevation()方法。

兼容老版的阴影策略
还是需要使用.9图片的阴影来做。

注: ViewCompat.setElevation() sadly doesn't apply shadows in pre-Lollipop.

RippleDrawable - 波纹效果
使用已经提供好的
?android:attr/selectableItemBackground
扩散到View边界
?android:attr/selectableItemBackgroundBorderless
设置后,会从孩子往父亲找一个依附的色。如果View往上找的时候,亲生父亲没背景色,会继续向上查找直到最顶端。找到了最顶端的爷爷,这个时候才绘制。
然而,如果父亲的兄弟又绘制了颜色,且盖住了最顶端的绘制,会导致看不到效果。如果有一定的透明度,结果就显而易见了。
特别注意:
当把硬件加速给关闭时,这个效果是没有的。
这是API 21的新属性,老版本无法使用.
改变默认响应色
改变Theme中的android:colorControlHighlight属性。

自定义

<!-- A green ripple drawn atop a black rectangle. -->
<ripple android:color="#ff00ff00">
    <item android:drawable="@android:color/black" />
</ripple>

<!-- A blue ripple drawn atop a drawable resource. -->
<ripple android:color="#ff0000ff">
    <item android:drawable="@drawable/my_drawable" />
</ripple>

android:color中是点击响应色,也是波纹扩散色。
item中是正常状态下的显示。

上一篇下一篇

猜你喜欢

热点阅读