Ripple,colorPrimary或​​colorAccent的颜色应该是多少?(材料设计)

Jav*_*oba 48 android colors design-guidelines ripple material-design

我已阅读材料设计指南,但如果它不是黑色(带alpha),我不知道Ripple的颜色应该是什么.

例如,我有一个colorPrimary = blue的应用程序,colorAccent = red.其实我使用的是colorAccent(带alpha),如果我想要一种不同于黑色的颜色,我应该使用colorPrimary(带alpha)?

我检查了谷歌的所有应用程序,但他们从不使用颜色的涟漪.

像我现在的图像:

波纹

ala*_*anv 57

使用26%alpha的彩色涟漪.

Android L不支持颜色状态列表中的主题属性,并且该<ripple>元素没有alpha通道,但对于有界涟漪,您可以执行以下操作:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="?android:attr/colorAccent">
    <item android:id="@android:id/mask">
        <color android:color="#42ffffff" />
    </item>
</ripple>
Run Code Online (Sandbox Code Playgroud)

这不适用于无限的波纹.或者,由于您知道自己的强调色,因此您可以定义26%的alpha版本或使用颜色状态列表.这些中的任何一个都能很好地适应无限的波纹.

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/accent_26" />
Run Code Online (Sandbox Code Playgroud)

RES /值/ colors.xml:

<resources>
    ...
    <color name="accent">#ff33b5e5</color>
    <color name="accent_alpha26">#4233b5e5</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

RES /颜色/ accent_alpha26.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/accent"
          android:alpha="0.26" />
</selector>
Run Code Online (Sandbox Code Playgroud)

  • 我是编写[材料样式和主题]的Android框架工程师(https://android.googlesource.com/platform/frameworks/base/+blame/refs/heads/master/core/res/res/values/ themes_material.xml).这是彩色涟漪的26%alpha.是的,您也可以使用后两个选项之一在主题或叠加主题中设置此项. (10认同)
  • 这不是问题,是关于Google指南建议在涟漪中使用颜色主要与颜色重音.您可以使用您的风格中的colorControlHighlight轻松设置波纹颜色. (4认同)
  • "RippleDrawable"的当前实现将颜色分为前景(展开)和背景(淡入),因此当键盘聚焦(仅背景)或触摸时100%黑色和按下状态动画时,纯黑色将显示50%黑色完成(前景和背景).这仍然有可能发生变化,因此我们没有公开任何API来单独控制它们. (2认同)

i.s*_*rin 42

这是你在找什么:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
   ...
   <item name="colorControlHighlight">@color/ripple_material_dark</item>
   ...
</style>
Run Code Online (Sandbox Code Playgroud)


ian*_*ake 29

Widget.Material.Button风格采用btn_default_material.xml作为它的背景:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?attr/colorControlHighlight">
  <item android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>
Run Code Online (Sandbox Code Playgroud)

注意,波纹颜色是?attr/colorControlHighlight默认#40ffffff或#40000000(对于深色和浅色的主题,分别)作为中提到触感导向.

正如您所注意到的,涟漪用于触摸反馈的微妙指示,因此它们不使用colorPrimarycolorAccent默认使用.这与Android 4.4(Kitkat)中所做的更改一致,默认情况下默认选择器颜色为中性.


Jav*_*oba 13

这是Roman Nurik在twitter上给我回答这个问题的答复:

Roman Nurik
@romannurik

@dahnark @romainguy它因情况而异,但很少你想使用强调色.我会说中性或初级

波纹颜色


Hsi*_*eng 5

作为参考,这些是AppCompat中定义的颜色。

<color name="ripple_material_dark">#33ffffff</color>
<color name="ripple_material_light">#1f000000</color>`
Run Code Online (Sandbox Code Playgroud)