Der Standardbrowser für Android 2.x unterstützt SVG nicht von Haus aus.
Die Standardbrowser für Android 3+ unterstützen SVG.
Um SVx-Versionen der 2.x-Version der Plattform hinzuzufügen, haben Sie zwei grundlegende Möglichkeiten:
Installieren Sie einen leistungsfähigeren Browser (wie Firefox oder Opera Mobile - beide unterstützen SVG)
Verwenden Sie eine JavaScript-Polyfüllung, mit der SVG analysiert und auf einer HTML5-Zeichenfläche gerendert werden kann
Die erste Option ist in Ordnung, wenn Sie nur versuchen, SVG für den persönlichen Gebrauch oder eine begrenzte (kontrollierbare) Gruppe von Benutzern zum Laufen zu bringen. Es ist keine gute Option, wenn Sie SVG verwenden möchten, während Sie auf eine große, unkontrollierte Benutzerbasis abzielen.
Im späteren Fall möchten Sie eine Polyfüllung verwenden. Es gibt heute viele JavaScript-Bibliotheken, die SVG prasen und auf eine Zeichenfläche rendern können. Zwei Beispiele sind:
Hallo, ich möchte für ImageView wissen, ob ich die Farbe dieser SVG-Image-Laufzeit ändern kann.
Shreyash Mahajan
22
Es gibt eine neue Open-Source-Bibliothek, die das Laden und Zeichnen von SVG Basic 1.1-Dateien unterstützt: https://github.com/pents90/svg-android . Die Leistung ist gut, da die eigentliche Zeichnung nativ von einem android.graphics.Picture-Objekt verarbeitet wird.
Damit es nicht übersehen wird, füge ich hier einen Kommentar hinzu (wie in der Antwort von @ Todd erwähnt). Android 3+ unterstützt SVG. Entwickler müssen sich also keine Sorgen um die Bibliotheken machen, wenn sie sich keine Sorgen um ältere Android-Geräte machen.
Monotasker
9
In meiner Antwort beziehe ich mich auf eine Bibliothek, mit der Entwickler SVG-Dateien in ihre Apps laden und rendern können. Android 3+ fügt Browserunterstützung für SVG hinzu, unterstützt SVG jedoch nicht in seiner Entwickler-API.
Pents90
Dieser hat bei mir leider mit Android 4.3 nicht funktioniert. Das Beispielbild ist leer. Ich verwende den genauen Code, der sich auf der Tutorial-Seite im Wiki befindet.
Es gibt eine neue Bibliothek (in aktiver Entwicklung) androidsvg , mit der man SVG-Bilder direkt in Projekte einbinden kann. Es hat den Vorteil, ein zu definieren, SVGImageViewdas es einem ermöglicht, ein SVG direkt in die Layout-XML zu integrieren.
Schließlich ist das Einfügen von SVG in Android unkompliziert.
Diese SVG-Bibliothek funktioniert tatsächlich. svg-android und seine Gabeln haben keine Stile / CSS angewendet, die ich in einer Gruppe für die Kinder der Gruppe definiert habe. Dieser tut es. Vielen Dank.
Ich habe gerade ein Github-Repo und ein Beispiel-Repo für meine eigene TPSVG-Bibliothek erstellt, die ich ursprünglich speziell für eine meiner Anwendungen erstellt habe.
Ich weiß, dass meine Lösung etwas hardcore ist, aber sie funktioniert hervorragend, erfordert keine externen Bibliotheken (zumindest nicht in Ihrem endgültigen Code) und ist extrem schnell.
1) Nehmen Sie einfach eine vorhandene SVG-Ladebibliothek, wie zum Beispiel svg-android-2 (eine Abzweigung von svg-android, die in einer anderen Antwort erwähnt wird, nur mit mehr Funktionen und Bugfixes): https://code.google.com / p / svg-android-2 /
2) Schreiben Sie eine einfache App, die nichts anderes tut, als Ihr SVG-Bild zu laden und anzuzeigen.
3) Ändern Sie die SVG-Ladebibliothek so, dass sie den Java-Code druckt, der die Picture-Klasse erstellt, oder in einer String-Variablen speichert.
4) Kopieren Sie den auf diese Weise erhaltenen Java-Code in die App, die Sie schreiben.
Check out Support-Vektor zeichnbar . Android Studio verfügt über ein Tool zum Konvertieren von SVG-Dateien in XML-Dateien.
Wenn Sie AppCompat mit ImageView (oder Unterklassen wie ImageButton und FloatingActionButton) verwenden, können Sie das neue Attribut app: srcCompat verwenden, um auf Vektor-Drawables zu verweisen (sowie auf alle anderen für Android: src verfügbaren Drawables):
Ab Android Support Library 23.3.0 können Support Vector Drawables nur über die App geladen werden: srcCompat oder setImageResource ()
Antworten:
Die vollständigste Antwort lautet:
Um SVx-Versionen der 2.x-Version der Plattform hinzuzufügen, haben Sie zwei grundlegende Möglichkeiten:
Die erste Option ist in Ordnung, wenn Sie nur versuchen, SVG für den persönlichen Gebrauch oder eine begrenzte (kontrollierbare) Gruppe von Benutzern zum Laufen zu bringen. Es ist keine gute Option, wenn Sie SVG verwenden möchten, während Sie auf eine große, unkontrollierte Benutzerbasis abzielen.
Im späteren Fall möchten Sie eine Polyfüllung verwenden. Es gibt heute viele JavaScript-Bibliotheken, die SVG prasen und auf eine Zeichenfläche rendern können. Zwei Beispiele sind:
Mit einer Polyfüllung können Sie Ihre SVG-Datei auf allen Versionen von Android 2.x in einem Canav rendern.
Ein vollständigeres Beispiel für diesen Ansatz finden Sie in diesem Blog-Beitrag, in dem die Verwendung der Canvg-Polyfüllung für die Funktionsweise von Kendo UI DataViz-Diagrammen (SVG-basiert) unter Android 2.x erläutert wird . Hoffentlich hilft das!
quelle
Es gibt eine neue Open-Source-Bibliothek, die das Laden und Zeichnen von SVG Basic 1.1-Dateien unterstützt: https://github.com/pents90/svg-android . Die Leistung ist gut, da die eigentliche Zeichnung nativ von einem android.graphics.Picture-Objekt verarbeitet wird.
quelle
Derzeit arbeiten einige Leute, darunter ich, unabhängig daran.
In diesen Artikeln finden Sie möglicherweise eine funktionierende Lösung:
Android. ImageView mit SVG-Unterstützung.
Android ImageView und Drawable mit SVG-Unterstützung
quelle
Es gibt eine neue Bibliothek (in aktiver Entwicklung) androidsvg , mit der man SVG-Bilder direkt in Projekte einbinden kann. Es hat den Vorteil, ein zu definieren,
SVGImageView
das es einem ermöglicht, ein SVG direkt in die Layout-XML zu integrieren.Schließlich ist das Einfügen von SVG in Android unkompliziert.
Weitere Details: Stapelüberlaufpfosten
quelle
Android unterstützt Vektor-Drawables: https://developer.android.com/reference/android/graphics/drawable/VectorDrawable.html
Und es gibt einen Konverter von Android SVG zu VectorDrawable: http://inloop.github.io/svg2android/
quelle
Ich habe einen kurzen Blick auf https://code.google.com/p/androidsvg/ geworfen . Bisher wurden alle SVG-Dateien angezeigt, die ich darauf geworfen habe. Sieht vielversprechend aus.
quelle
Ich habe gerade ein Github-Repo und ein Beispiel-Repo für meine eigene TPSVG-Bibliothek erstellt, die ich ursprünglich speziell für eine meiner Anwendungen erstellt habe.
https://github.com/TrevorPage/TPSVG_Android_SVG_Library
https://github.com/TrevorPage/TPSVG_Example1
quelle
Ich weiß, dass meine Lösung etwas hardcore ist, aber sie funktioniert hervorragend, erfordert keine externen Bibliotheken (zumindest nicht in Ihrem endgültigen Code) und ist extrem schnell.
1) Nehmen Sie einfach eine vorhandene SVG-Ladebibliothek, wie zum Beispiel svg-android-2 (eine Abzweigung von svg-android, die in einer anderen Antwort erwähnt wird, nur mit mehr Funktionen und Bugfixes): https://code.google.com / p / svg-android-2 /
2) Schreiben Sie eine einfache App, die nichts anderes tut, als Ihr SVG-Bild zu laden und anzuzeigen.
3) Ändern Sie die SVG-Ladebibliothek so, dass sie den Java-Code druckt, der die Picture-Klasse erstellt, oder in einer String-Variablen speichert.
4) Kopieren Sie den auf diese Weise erhaltenen Java-Code in die App, die Sie schreiben.
Weitere Informationen zu dieser Technik und zum Herunterladen des Beispielquellcodes finden Sie in meinem Blog: http://androiddreamrevised.blogspot.it/2014/06/transforming-svg-images-into-android.html
Ein funktionierendes Beispiel für diese Technik erhalten Sie von Google Play hier: https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.svgtodrawablesample
Hier ist ein Beispiel für eine kommerzielle App, die mit dieser Technik erstellt wurde (Mailänder U-Bahn-Karte): https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.atmmetroplan
Beachten Sie, wie schnell die Karte geladen wird und wie hübsch sie aussieht, auch wenn sie vergrößert ist.
quelle
Check out Support-Vektor zeichnbar . Android Studio verfügt über ein Tool zum Konvertieren von SVG-Dateien in XML-Dateien.
Wenn Sie AppCompat mit ImageView (oder Unterklassen wie ImageButton und FloatingActionButton) verwenden, können Sie das neue Attribut app: srcCompat verwenden, um auf Vektor-Drawables zu verweisen (sowie auf alle anderen für Android: src verfügbaren Drawables):
Ab Android Support Library 23.3.0 können Support Vector Drawables nur über die App geladen werden: srcCompat oder setImageResource ()
quelle
Firefox für Android unterstützt SVG.
quelle
Opera Mobile für Android unterstützt SVG und Opera Mini unterstützt statische SVG-Inhalte.
quelle