web-dev-qa-db-fra.com

Pourquoi mon smallIcon for Notifications est-il toujours grisé?

J'ai essayé de créer la petite icône exactement 16x16, à l'échelle de gris, rien que du gris et du blanc (la couleur grise étant hex valeur 616161), pour créer une silhouette de l'icône de mon application.

Pourtant, peu importe ce qu'il apparaît simplement comme un carré blanc/gris dans les notifications. Qu'est-ce que je fais mal?

(Mon min api est 21, en supposant qu'il soit pertinent)

16
user8367195

Suivez ce lien

Commençons par comprendre la documentation Android qui se présente comme suit:

"Mettez à jour ou supprimez les éléments qui impliquent la couleur. Le système ignore tous les canaux non alpha dans les icônes d'action et dans l'icône de notification principale. Vous devez supposer que ces icônes seront uniquement en alpha. Le système dessine des icônes de notification en blanc et des icônes d'action en gris foncé. "

Maintenant, c'est facile à manquer et j'ai vu de nombreuses applications en direct dans l'App Store avec des milliers d'utilisateurs qui n'ont pas suivi les directives mentionnées.

Alors laissez-moi vous expliquer en détail comment vous pouvez convertir votre icône de notification en une Android conviviale en quelques clics).

Dans votre éditeur d'images préféré, ouvrez votre fichier d'icônes. Convertissez toutes les parties de l'image que vous ne souhaitez pas afficher en pixels transparents. Toutes les couleurs et les pixels non transparents sont affichés en blanc. Voyons un exemple.

enter image description here

EDITED: Merci @Andrey Patseiko pour le outil

31
nhp

Pour la notification, vous devez utiliser différentes icônes pour différentes versions d'Android:

Notification notification = new Notification.Builder(context)
                .setAutoCancel(true)
                .setContentTitle("My notification")
                .setContentText("Look, white in Lollipop, else color!")
                .setSmallIcon(getNotificationIcon())
                .build();
    return notification;

Obtenir l'icône de notification sur la base de la version

private int getNotificationIcon() {
    boolean useWhiteIcon = (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.Lollipop);
    return useWhiteIcon ? R.drawable.icon_silhouette : R.drawable.ic_launcher;
}
6
Aj 27

Avec de nouvelles fonctionnalités et capacités, Android 5.0 inclut une variété de modifications du système et des changements de comportement de l'API. Veuillez passer par changements de comportement de notification .

Les notifications sont dessinées avec du texte sombre sur des arrière-plans blancs (ou très clairs) pour correspondre aux nouveaux widgets de conception de matériaux. Assurez-vous que toutes vos notifications sont correctes avec le nouveau jeu de couleurs. Si vos notifications semblent incorrectes, corrigez-les:

  • Utilisez setColor() pour définir une couleur d'accentuation dans un cercle derrière votre image d'icône.
  • Mettez à jour ou supprimez les actifs qui impliquent la couleur. Le système ignore tous les canaux non alpha dans les icônes d'action et dans l'icône de notification principale. Vous devez supposer que ces icônes seront uniquement en alpha. Le système dessine des icônes de notification en blanc et des icônes d'action en gris foncé.

Donc, en gros, vous devez utiliser silhouette icônes comme icône de notification pour l'API niveau 21 +

3
Anoop M