web-dev-qa-db-fra.com

Quelle devrait être la couleur de l’ondulation, colorPrimary ou colorAccent? (Conception matérielle)

J'ai lu Material Design Guidelines mais je ne sais pas quelle devrait être la couleur de l'ondulation si elle n'est pas noire (avec alpha).

Par exemple, j'ai une application avec colorPrimary = blue et colorAccent = red. En fait, j'utilise colorAccent (avec alpha), je devrais utiliser colorPrimary (avec alpha) si je veux une couleur différente du noir à l'ondulation?

J'ai vérifié toutes les applications de Google mais elles n'utilisent jamais d'ondulations colorées.

Une image comme celle que j'ai maintenant:

ripple

43
JavierSegoviaCordoba

Utilisez 26% alpha pour les rides colorées.

Android L ne prend pas en charge les attributs de thème dans les listes d’état des couleurs et le <ripple> L'élément _ n'a pas de canal alpha, mais vous pouvez faire quelque chose comme:

<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>

Cela ne fonctionnera pas pour une ondulation sans limite. Comme vous connaissez votre propre couleur d'accent, vous pouvez également définir une version alpha à 26% ou utiliser une liste d'états de couleur. L'une ou l'autre de ces solutions fonctionnera bien pour une ondulation sans limite.

<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>

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>
52
alanv

Voici ce que vous recherchez:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
   ...
   <item name="colorControlHighlight">@color/ripple_material_dark</item>
   ...
</style>
37
i.shadrin

Le style Widget.Material.Button utilise le btn_default_material.xml comme arrière-plan:

<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:color="?attr/colorControlHighlight">
  <item Android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>

Notez que la couleur d'ondulation est ?attr/colorControlHighlight qui par défaut est # 40ffffff ou # 400000 (pour les thèmes sombres et clairs, respectivement), comme indiqué dans le guide de rétroaction tactile .

Comme vous l'avez remarqué, les ondulations sont utilisées comme indications subtiles de retour tactile, c'est pourquoi elles n'utilisent pas colorPrimary ou colorAccent par défaut. Ceci est cohérent avec les modifications apportées à Android 4.4 (KitKat) qui rend les couleurs du sélecteur par défaut neutres par défaut.

29
ianhanniballake

Voici la réponse que Roman Nurik m'a donnée sur Twitter à cette question:

Nurik romain
@ romannurik

@dahnark @romainguy cela varie selon les situations, mais vous voulez rarement utiliser la couleur d'accent. je dirais en général neutre ou primaire

ripple color

13
JavierSegoviaCordoba

Pour référence, ce sont les couleurs définies dans AppCompat.

<color name="ripple_material_dark">#33ffffff</color>
<color name="ripple_material_light">#1f000000</color>`
4
Hsingchien Cheng