Каким должен быть цвет Ripple, colorPrimary или colorAccent? (Дизайн материалов)
У меня есть Руководство по дизайну материалов, но я не знаю, какой должен быть цвет Ripple, если он не черный (с альфа).
Например, у меня есть приложение с цветомPrimary = синий, а colorAccent = красный. На самом деле я использую colorAccent (с альфой), я должен использовать colorPrimary (с альфой), если я хочу, чтобы цвет, отличающийся от черных, пульсировал?
Я проверил все приложения Google, но они никогда не используют рябь с цветом.
Изображение, подобное мне сейчас:
![ripple]()
Ответы
Ответ 1
Используйте 26% альфа для цветной ряби.
Android L не поддерживает атрибуты темы в списках состояния цвета, а элемент <ripple>
не имеет альфа-канала, но для ограниченной ряби вы можете сделать что-то вроде:
<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% альфа-версию, либо использовать список состояний цвета. Любой из них будет отлично работать для неограниченной пульсации.
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/accent_26" />
RES/значения/colors.xml:
<resources>
...
<color name="accent">#ff33b5e5</color>
<color name="accent_alpha26">#4233b5e5</color>
</resources>
Рез/цвет/accent_alpha26.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/accent"
android:alpha="0.26" />
</selector>
Ответ 2
Стиль 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>
Обратите внимание, что цвет пульсации ?attr/colorControlHighlight
, который по умолчанию # 40ffffff или # 40000000 (для темных и легких тем, соответственно), как указано в касание обратной связи.
Как вы заметили, рябь использует тонкие признаки сенсорной обратной связи, поэтому почему они не используют colorPrimary
или colorAccent
по умолчанию. Это согласуется с изменениями, внесенными в Android 4.4 (Kitkat), которые по умолчанию выбрали нейтральные цвета по умолчанию.
Ответ 3
Вот что вы ищете:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="colorControlHighlight">@color/ripple_material_dark</item>
...
</style>
Ответ 4
Это ответ, который Роман Нурик дал мне в twitter на этот вопрос:
Роман Нурик
@romannurik
@dahnark @romainguy это зависит от ситуации, но редко вы хотите использовать цвет акцента. я бы сказал, вообще нейтральный или первичный
![ripple color]()