De quelle couleur doit être l'icône "sombre" du matériau ?
Sur la documentation officielle ( https://www.google.com/design/spec/style/icons.html#icons-system-icons en bas) c'est 54% noir (gris) , mais tous les téléchargements des icônes de matériaux sont soit blanc ou 100% noir .
Également sur le nouveau site officiel https://www.google.com/design/icons/ vous pouvez télécharger en blanc ou en noir, mais pas en "gris"!
Je dois donc définir 54% de toutes les icônes téléchargées pour moi? Ou ai-je raté quelque chose?
Je suis trop tard pour répondre mais je vais quand même répondre à la question car cela peut faire gagner beaucoup de temps à certains développeurs. Moi-même, en tant que développeur, j'ai eu beaucoup de mal à créer des icônes de différentes couleurs et comme je ne suis pas designer, c'était vraiment difficile. Après beaucoup de recherches, j'ai trouvé ce plugin dans Android Studio appelé Android Material Icon Generator. Il crée toutes les icônes de matériaux dans toutes les couleurs avec différentes tailles et également avec un facteur d'opacité. Ceci est d'une grande aide pour les développeurs qui ne sont pas bons en conception. Pas besoin de télécharger les icônes séparément, ce plugin suffit.
Dans le Android Asset Studio il y a un Generic Icon Generator avec toutes les icônes de matériaux et vous pouvez sélectionner la couleur que vous voulez.
Il y a trois façons de gérer l'opacité:
a) Simple, je les télécharge (sur materialdesignicons.com si j'ai besoin de l'option grise) et les utilise, car je n'ai rien à changer en aucune façon. Si je ne trouve pas celui dont j'ai besoin, je télécharge celui en noir (blanc) et le transforme en version 54% d'opacité (c'est un travail de 30 secondes sur gimp/photoshop).
b) Si je n'ai besoin que de l'état "normal" et "pressé", je télécharge celui noir (blanc), crée les deux versions, à 54% pour naturel et 87% pour pressé, puis je crée un fichier dessinable pour les combiner (vous pouvez également gérer concentré):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true"
Android:drawable="@mipmap/settings_pressed" /> <!-- pressed -->
<item Android:state_focused="true"
Android:drawable="@mipmap/settings" /> <!-- focused -->
<item Android:drawable="@mipmap/settings" /> <!-- default -->
</selector>
c) Si je dois changer l'opacité de l'icône souvent dans mon code, je le fais de manière progammatique:
ImageButton mButton = (ImageButton) findViewById(R.id.button);
final Drawable buttonIcon = context.getResources().getDrawable(R.mipmap.your_icon);
buttonIcon.setAlpha(138); //this is the value of opacity 1~255
mButton.setBackground(buttonIcon);
Notez que vous pouvez combiner les méthodes b) et c), vous n'avez donc pas à contrôler le changement d'opacité en appuyant sur un programme, mais vous pouvez toujours changer sa valeur globale selon vos besoins.