Ich möchte alle .PNG Ressourcen (Symbole) in meinem Projekt mit Vektorversionen ersetzen. Und damit dies so effizient wie möglich ist, wollte ich doppelte Bilder aufgrund unterschiedlicher Zustände vermeiden (wie bei "aktiven" und "inaktiven" Versionen desselben Symbols).Einzelne Vektorressource mehrere Tönungen
Früher habe ich das mit separaten PNG-Dateien für jede Version gemacht: ein opak "aktiv" und leicht transparent "inaktiv".
Die Frage ist also, ist es möglich, einige XMLs zu erstellen, die auf ein einzelnes Vektorbild (vorzugsweise) verweisen, aber unterschiedliche Farben/Farbtöne darauf anwenden? Oder zumindest verschiedene Alpha-Werte wären genug.
P.S. Meine minSDK-Version ist 19, wenn es darauf ankommt.
UPDATE_01: Ich denke, ich muss in ein bisschen mehr Details erklären. Vektorressourcen funktionieren wie erwartet (alle Vorbereitungen sind für compat lib getroffen, um Vektoren nach Bedarf zu zeichnen).
Das Hauptproblem besteht darin, ein einziges Vektorsymbol und mehrere Referenzen davon mit verschiedenen Farben/Alphas in separaten XMLs zu verwenden. Und verwenden Sie diese XML-Dateien wo nötig (auf der Symbolleiste, Schaltflächen, Status, etc.).
UPDATE_02: Vielleicht und Beispiel wäre besser.
Ich habe einen Vektor ziehbar eines „home“ Symbol, das wie folgt aussieht:
<vector
android:height="24dp"
android:viewportHeight="792.0"
android:viewportWidth="792.0"
android:width="24dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<path
android:fillColor="#FF000000"
android:pathData="..."/>
</vector>
Was ich will, ist den gleichen XML-Vektor ziehbar zu verwenden, aber mit unterschiedlichen Tönungen für „aktiv“ und „inaktiv "Zum Beispiel in den Registerkarten eines Seitenadapters.
Was ich jetzt dafür mache, dupliziere dieses XML und ändere seinen "android: fillColor" -Wert.
Muting es (in Code) in allen Orten, die es verwendet wird, ist eine Möglichkeit, aber nicht sehr gut aus meiner Sicht. Vielleicht gibt es einen anderen Weg? So etwas wie diese (pseudo):
<image-reference
android:srcDrawable="@drawable/home_icon"
android:tint="@color/activeHomeIcon" />
Und dann benutzen Sie einfach diesen „home_icon_ref.xml“ überall als ziehbar Quelle.
Hoffe das macht meine Frage diesmal klarer.
'DrawableCompat # setTintList' – pskink
API <21, dann müssen Sie in jeder Aktivität hinzufügen, wo Sie verwenden Vektor drawable.- -> static { AppCompatDelegate.setCompatVectorFromResourcesEnabled (true); } –
Ich denke, ich sollte mehr Details zum Thema hinzufügen. Siehe mein Update. –