Ändern der Farbe von einem android drawable
Ich würde gerne in der Lage sein, die Verwendung der gleichen drawable vertreten:
als die gleiche drawable, und re-Farbe die drawable basierend auf einige programmatische Werte, so dass die Endbenutzer könnten re-Design der Benutzeroberfläche.
Was ist der beste Weg, dies zu tun? Ich habe versucht (und wiederverwendet Symbole) diese frühere S. O. Frage aber ich kann nicht vertreten, die änderung als eine einfache änderung der Farbe, da es variiert auch in der Sättigung und Wert..
Ist es am besten, speichern Sie das Symbol als alle weißen in der Gegend, in der ich die geändert werden sollen? oder transparent? oder einige andere solid color?
Gibt es irgendeine Methode, die ermöglicht es Ihnen, um herauszufinden, die matrix basierend auf der Differenz zwischen der Farbe des red_icon und Farbe blue_icon?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also nach einer Menge von Versuch und Irrtum, das Lesen von verschiedenen Artikeln, und vor allem, geht über die API-Demos (ColorFilters.java -gefunden im com.Beispiel.android.apis.Grafiken) ich habe die Lösung gefunden.
Für solide Bilder, die ich gefunden habe, ist es am besten, um die Farbe filter PorterDuff.- Modus.SRC_ATOP, da es als overlay die Farbe auf der Oberseite des Bildes, so dass Sie die Farbe ändern, um die genaue Farbe, die Sie suchen.
Für Bilder, die komplexer sind, wie die oben, die ich gefunden habe, das beste, was zu tun ist, um Farbe das gesamte Bild WEIß (FFFFFF), so dass, wenn Sie tun PorterDuff.- Modus.MULTIPLIZIEREN Sie, dass Sie am Ende mit den richtigen Farben, und alle schwarz (000000) im Bild bleibt schwarz.
Den colorfilters.java zeigt Ihnen, wie es geht, wenn Sie Ihre Zeichnung auf eine Leinwand zu malen, aber wenn alles, was Sie brauchen, ist die Farbe ein drawable dann funktioniert:
Erstellte ich eine demo-Tätigkeit mit einigen der API-Demo-code, um zwischen zu tauschen, jede Farbe-filter-Modus, um zu versuchen, Sie für verschiedene Situationen und habe festgestellt, dass es von unschätzbarem Wert, so dass ich dachte, ich würde es hier posten.
Den beiden anderen Abhängigkeiten, GraphicsActivity.java und PictureLayout.java, kann direkt kopiert werden aus dem API-Demos Aktivität, wenn Sie möchten, um es zu testen.
Dies ist wirklich einfach zu tun auf Lollipop. Stellen Sie eine xml-drawable und verweisen Sie Ihre png-Datei und legen Sie die Tönung wie diese:
Deine Antwort ist sehr nett. Obwohl, diese Lösung ist die Praxis zu, wenn Sie eine Textview und ein embed-drawable:
Im Falle dass, wenn Sie anwenden möchten, Farb-filter, um Ihr Bild in der Bildansicht können Sie implementieren, die es auch in einfacher Weise. Verwenden Sie einfach das Attribut
android:tint
in der Bildansicht in xml.Beispiel:
Dies ist, was ich getan habe, nach einem Blick in die Dokumentation
genannt und es