SVG-Unterstützung für Android

Antworten:

56

Die vollständigste Antwort lautet:

  • 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:

  1. Installieren Sie einen leistungsfähigeren Browser (wie Firefox oder Opera Mobile - beide unterstützen SVG)
  2. 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:

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!

Todd
quelle
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.

pents90
quelle
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.
BVB
2
@BVB Sie müssen die Hardwarebeschleunigung deaktivieren, damit sie unter Android 4.x funktioniert. Siehe: stackoverflow.com/questions/10384613/… und stackoverflow.com/questions/8771219/…
pents90
Danke, aber wird das anderswo keine negativen Auswirkungen haben?
BVB
8

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.

Weitere Details: Stapelüberlaufpfosten

Abid H. Mujtaba
quelle
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.
Domenukk
1

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.

Bartek
quelle
1

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 ()

Surya
quelle
0

Firefox für Android unterstützt SVG.

Zuuum
quelle