it-swarm.com.de

Warum ist mein smallIcon für Benachrichtigungen immer ausgegraut?

Ich habe versucht, das kleine Symbol genau 16 x 16 zu machen, in Graustufen, nur in Grau und Weiß (die graue Farbe ist hex Wert 616161), um eine Silhouette meines Anwendungssymbols zu erstellen.

Dabei spielt es keine Rolle, was in den Benachrichtigungen nur als weiß/graues Quadrat angezeigt wird. Was mache ich falsch?

(Mein min api ist 21, vorausgesetzt es ist relevant)

16
user8367195

Folgen Sie diesen Link

Lassen Sie uns zunächst die Dokumentation zu Android wie folgt verstehen

„Aktualisieren oder entfernen Sie Assets, die Farbe enthalten. Das System ignoriert alle Nicht-Alpha-Kanäle in Aktionssymbolen und im Hauptbenachrichtigungssymbol. Sie sollten davon ausgehen, dass diese Symbole nur Alpha-Zeichen enthalten. Das System zeichnet Benachrichtigungssymbole in Weiß und Aktionssymbole in Dunkelgrau. “

Das ist jetzt leicht zu übersehen und ich habe viele Apps im App Store gesehen, die Tausende von Benutzern haben, die die genannten Richtlinien nicht befolgt haben.

Lassen Sie mich im Detail erklären, wie Sie Ihr Benachrichtigungssymbol mit wenigen Klicks in ein Android freundliches Symbol umwandeln können.

Öffnen Sie in Ihrem bevorzugten Bildeditor Ihre Symboldatei. Konvertieren Sie alle Teile des Bildes, die Sie nicht anzeigen möchten, in transparente Pixel. Alle Farben und nicht transparenten Pixel werden in Weiß angezeigt. Lassen Sie uns ein Beispiel durchgehen.

enter image description here

EDITED: Danke @Andrey Patseiko für das Tool

31
nhp

Für die Benachrichtigung müssen Sie verschiedene Symbole für verschiedene Android-Versionen verwenden:

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

Benachrichtigungssymbol auf der Basis der Version abrufen

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

Android 5.0 enthält eine Reihe von System- und API-Verhaltensänderungen. Bitte lesen Sie Änderungen des Benachrichtigungsverhaltens .

Benachrichtigungen werden mit dunklem Text auf weißem (oder sehr hellem) Hintergrund gezeichnet, um den neuen Widgets für das Materialdesign zu entsprechen. Stellen Sie sicher, dass alle Ihre Benachrichtigungen mit dem neuen Farbschema richtig aussehen. Wenn Ihre Benachrichtigungen falsch aussehen, beheben Sie sie:

  • Verwenden Sie setColor(), um eine Akzentfarbe in einem Kreis hinter Ihrem Symbolbild festzulegen.
  • Aktualisieren oder entfernen Sie Elemente, die Farbe enthalten. Das System ignoriert alle Nicht-Alpha-Kanäle in Aktionssymbolen und im Hauptbenachrichtigungssymbol. Sie sollten davon ausgehen, dass diese Symbole nur Alpha-Zeichen enthalten. Das System zeichnet Benachrichtigungssymbole in Weiß und Aktionssymbole in Dunkelgrau.

Grundsätzlich müssen Sie silhouette Symbole als Benachrichtigungssymbol für API Level 21 + verwenden

3
Anoop M