Hintergrund
Ich habe festgestellt, dass Android jetzt eine Art Vektorzeichnung über eine Klasse namens " VectorDrawable " (und auch AnimatedVectorDrawable , BTW) unterstützt. Ich habe es herausgefunden, indem ich mir angesehen habe, was es Neues in Android-Studio gibt .
Ich frage mich , ob dies das Ende mit würde mehrere Dateien in mehrere Ordner setzen ( mdpi
, hdpi
, xhdpi
, usw.). Das wäre großartig und könnte in einigen Fällen die Größe von Apps minimieren.
Die Fragen
Ich möchte ein paar Fragen zu dieser neuen Klasse stellen:
Ist es möglich, es in älteren Android-Versionen zu verwenden, möglicherweise über eine Bibliothek der Support-Bibliothek von Google?
Ich bin nicht mit der Funktionsweise vertraut, aber kann Lollipop mit SVG-Dateien umgehen? Kann es etwas tun, was mit SVG-Dateien erreichbar ist?
Gibt es ein Beispiel / Tutorial / Video für die Verwendung außer der Dokumentation, die ich gefunden habe?
quelle
s a very usefull tool but I
hat in einem solchen Fall ein falsches Ergebnis und ich weiß nicht, was falsch ist ... Hmmm, für die weitere Veröffentlichung würde ich mir wünschen, dass dieses Tool über ein schlechtes Format informiert wird ... Wenn ich benutzte reine SVG-Dateien mit 3-Party-Bibliotheken alles ist inAntworten:
UPDATE AM März 2016
Von Android Support Library 23.2.1 Update, Support Vector Drawables und Animated Vector Drawables. (Sie können auch lastoneone für das gleiche verwenden)
Bitte aktualisieren Sie die Version einer Bibliothek in der Gradle-Datei.
Mit Vector Drawables können Sie mehrere PNG-Assets durch eine einzige in XML definierte Vektorgrafik ersetzen . Während früher auf Lollipop und höher Geräte beschränkt , die beide
VectorDrawable
undAnimatedVectorDrawable
sind jetzt durch zwei neue Support - Bibliotheken Unterstützung-Vektor-ziehbar und animierte-Vektor-ziehbar. neuesapp:srcCompat
Attribut für Referenzvektor-Drawables.Überprüfen Sie die Quelle auf Github mit einigen Beispielbeispielen .
Änderungen für die Appcompat-Bibliothek v7:
Die Abhängigkeit von Vektor-Assets wurde rückgängig gemacht, sodass Entwickler, die die Appcompat-Bibliothek verwenden, nicht gezwungen sind, die
VectorDrawable
zugehörigen Build-Flags zu verwenden.quelle
compile
obige Aussage impliziert, dass das Projekt verwendet,RecyclerView
was nicht immer der Fall ist.Update 2 : Sie aktivieren es wieder in der Support Library 23.4.0:
Überprüfen Sie diese 23.4.0 jetzt verfügbar
Update : Dies funktioniert nicht ab Version 23.3.0. Weitere Informationen finden Sie hier . Proxy-Drawables funktionieren nicht.
app:srcCompat
undsetImageResource()
arbeiten jedoch.Vector Drawable-Unterstützung ist in der Support-Bibliothek ab Version 23.2 verfügbar. Um diese Zeichen jedoch ordnungsgemäß verwenden zu können, muss indirekt auf sie verwiesen werden.
Der erste Schritt wäre, die
AppCompat
Version zu stoßen .Zweitens aktivieren Sie die Unterstützung von Vector Drawable. Bei Verwendung des Gradle-Plugins 2.0+
Andernfalls
Drittens beziehen Sie sich auf die verknüpfte Antwort .
quelle
MenuItem
, was gut funktioniert.Sie können diese Support-Bibliothek ausprobieren . Es unterstützt VectorDrawable und AnimatedVectorDrawable, die in Lollipop eingeführt wurden, und ist vollständig abwärtskompatibel.
quelle
Um einige der Antworten hier zu ergänzen: Ja, Sie können zumindest teilweise Unterstützung für VectorDrawables vor Lollipop erhalten .
Wie teilweise? Es kommt darauf an - ich habe dieses Diagramm erstellt , um zu helfen (gültig für Support Library 23.4.0 bis - mindestens - 25.1.0).
quelle
Leider sind VectorDrawable und AnimatedVectorDrawable derzeit nicht in der Support-Bibliothek verfügbar. Um diese Funktion in Pre-Lollipop-Versionen nutzen zu können, können Sie den inoffiziellen Backport MrVector verwenden.
MrVector ist in Github verfügbar und unterstützt Android-Versionen 7+.
Aus der offiziellen Readme
Fügen Sie zum Hinzufügen der MrVector-Abhängigkeit die folgende Zeile zu Ihrem build.gradle-Abhängigkeitsblock hinzu.
Um das Drawable aus dem Vektor-XML zu erstellen,
Hoffe das hilft.
quelle
Wenn Sie VectorDrawable verwenden, generiert Android Studio automatisch entsprechende PNG-Dateien (basierend auf Ihren XML-Dateien) für Pre-Lollipop-Versionen.
Beachten Sie, dass diese generierten PNG-Dateien auf Geräten mit einer API unter 21 als BitmapDrawables anstelle von VectorDrawables betrachtet werden und daher auf diesen Geräten nicht animiert oder ähnlich sein können.
Weitere Informationen finden Sie unter "Abwärtskompatibilität": http://android-developers.blogspot.co.at/2015/09/android-studio-14.html
quelle
Lollipop kann SVG-Dateien nicht ohne Bibliotheken von Drittanbietern verarbeiten.
Die beste Lösung, die ich gefunden habe, ist die BetterVectorDrawable-Bibliothek zusammen mit dem SVG to VectorDrawable-Konverter .
BetterVectorDrawable ist die VectorDrawable-Implementierung für Android 4.0+ mit konfigurierbarem Fallback-Verhalten unter Android 5.0+.
SVG to VectorDrawable Converter ist der Stapelkonverter von SVG-Bildern in Android VectorDrawable XML-Ressourcendateien. Online Version
Links verweisen auf Readmes, die genügend Informationen zur Verwendung der Bibliothek und des Konverters enthalten.
quelle
Derzeit befinden sich keine VectorDrawables in der Support-Bibliothek.
Funkystein hat recht - VectorDrawable ähnelt SVG und unterstützt nur die Funktionen des Vektorzeichnens, die am meisten nachgefragt werden, damit sich Android auf die Leistung konzentrieren kann. pathData hat beispielsweise das gleiche Format wie die SVG-Zeichenfolge "d".
quelle
Die gute Nachricht ist, dass Google die Android Support Library 23.2 veröffentlicht hat, die Vector Drawables und animierte Vector Drawables unterstützt!
Aber danke an die Leute, die diese Bibliothek vor Google portiert haben!
Gebrauchsanweisung:
Siehe " Age-of-the-Vectors " von @chrisbanes
quelle