Android Ripple、colorPrimary或colorAccent的颜色应该是什么?(材料设计)
我有阅读,但我不知道什么应该是波纹的颜色,如果它不是黑色(与阿尔法) 例如,我有一个应用程序,colorPrimary=blue,colorAccent=red。实际上,我使用的是colorAccent(带有alpha),如果我想要黑色与涟漪不同的颜色,我应该使用colorPrimary(带有alpha) 我检查了谷歌的所有应用程序,但他们从不使用彩色涟漪 像我现在这样的形象: 该样式使用作为背景:Android Ripple、colorPrimary或colorAccent的颜色应该是什么?(材料设计),android,colors,material-design,ripple,design-guidelines,Android,Colors,Material Design,Ripple,Design Guidelines,我有阅读,但我不知道什么应该是波纹的颜色,如果它不是黑色(与阿尔法) 例如,我有一个应用程序,colorPrimary=blue,colorAccent=red。实际上,我使用的是colorAccent(带有alpha),如果我想要黑色与涟漪不同的颜色,我应该使用colorPrimary(带有alpha) 我检查了谷歌的所有应用程序,但他们从不使用彩色涟漪 像我现在这样的形象: 该样式使用作为背景: <ripple xmlns:android="http://schemas.android
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>
请注意,涟漪颜色为?attr/colorControlHighlight
,如中所述(分别适用于深色和浅色主题)
正如您所注意到的,涟漪被用于触摸反馈的细微指示,因此,默认情况下,涟漪不使用
colorPrimary
或colorancent
。这与Android 4.4(Kitkat)中所做的更改是一致的,默认选择器颜色为中性 这是罗曼·努里克在推特上对这个问题的回答:
罗马努里克@罗曼努里克 @dahnark@Romanguy它因情况而异,但很少使用强调色。我一般说来是中性的或初级的
对彩色波纹使用26%的alpha Android L不支持颜色状态列表中的主题属性,
元素没有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>
这对无限的涟漪不起作用。或者,由于您知道自己的重音颜色,因此可以定义26%的alpha版本或使用颜色状态列表。这两种方法中的任何一种都适用于无限波纹
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/accent_26" />
res/values/colors.xml:
<resources>
...
<color name="accent">#ff33b5e5</color>
<color name="accent_alpha26">#4233b5e5</color>
</resources>
...
#ff33b5e5
#4233b5e5
res/color/accent_alpha26.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/accent"
android:alpha="0.26" />
</selector>
以下是您要查找的内容:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="colorControlHighlight">@color/ripple_material_dark</item>
...
</style>
...
@颜色/波纹\u材质\u深色
...
这些是AppCompat中定义的颜色,仅供参考
<color name="ripple_material_dark">#33ffffff</color>
<color name="ripple_material_light">#1f000000</color>`
#33ffffff
#1000万`
我认为谷歌在触摸反馈方面存在问题。例如,滚动效果在Play Store、Gmail、Chrome。。。但在Youtube上是红色的,剧本是蓝色的。。。他们应该在材料设计指南中添加一篇文章来讨论这一点。他们还有其他指南,但应该更新。。。一般来说,这是正确的,并且您不希望对大面积使用彩色波纹。我希望远离材质规定,使用不同颜色的波纹,但需要一个波纹不透明度参数,以便将其设置为100%。这不是问题,是关于谷歌的指导方针,建议在涟漪中使用原色与强调色。您可以在自己的风格中使用colorControlHighlight轻松设置涟漪颜色。我是Android框架工程师,他编写了。彩色涟漪的alpha值为26%。是的,您也可以使用后两个选项之一在主题或覆盖主题中设置此选项。colorAccent
是不透明的,因此这里的示例依赖于颜色混合来实现26%的alpha。默认的涟漪颜色,colorControlHighlight
具有内置的不透明度,您可以使用@color/white
作为遮罩颜色。RippleDrawable
的当前实现将颜色分为前景(展开)和背景(淡入),因此当键盘聚焦时纯黑色将显示50%的黑色(只有背景)或触摸时100%黑色,按下状态动画完成(前景和背景)。这仍然会发生变化,因此我们没有公开任何单独控制它们的API。这是涟漪材质规范的一部分,但我认为规范的这一部分尚未发布(仍然是在制品,每个版本的ripple行为都会发生变化;)。为什么ripple\u material\u light
是深色,而ripple\u material\u dark
是浅色,我缺少了什么吗?@iCantC因为在深色主题中,ripple需要浅色才能看到,反之亦然