Android supporte-t-il SVG? Un exemple?
La réponse la plus complète est la suivante:
Pour ajouter la prise en charge SVG aux versions 2.x de la plateforme, vous avez deux choix de base:
La première option est correcte si vous essayez simplement de faire fonctionner SVG pour des utilisations personnelles ou un ensemble limité (contrôlable) d'utilisateurs. Ce n'est pas une excellente option si vous souhaitez utiliser SVG tout en ciblant une large base d'utilisateurs non contrôlée.
Dans le dernier cas, vous souhaitez utiliser un polyfill. Il existe de nombreuses bibliothèques JavaScript disponibles aujourd'hui qui peuvent améliorer SVG et effectuer un rendu sur un canevas. Deux exemples:
En utilisant un polyfill, vous pouvez rendre votre SVG dans un canavs sur toutes les versions de Android 2.x.
Pour un exemple plus complet de cette approche, vous pouvez vous référer à ce billet de blog qui traite de l'utilisation du polyfill canvg pour faire fonctionner les graphiques Kendo UI DataViz (basés sur SVG) sur Android 2.x. J'espère que ça aide!
Il existe une nouvelle bibliothèque open source qui prend en charge le chargement et le dessin des fichiers SVG Basic 1.1: https://github.com/pents90/svg-Android . Les performances sont bonnes car le dessin réel est géré de manière native par un objet Android.graphics.Picture.
Il y a une nouvelle bibliothèque (en développement actif) androidsvg qui permet d'incorporer des images svg directement dans les projets. Il a l'avantage de définir un SVGImageView
qui permet d'incorporer un svg directement dans le layout xml.
Enfin, inclure svg dans Android est simple.
Plus de détails: Stack Overflow post
Actuellement, certaines personnes, dont moi, y travaillent de manière indépendante.
Vous pouvez trouver une solution de travail dans ces articles:
Android. ImageView avec prise en charge SVG.
Android ImageView et Drawable avec prise en charge SVG
Android prend en charge les dessins vectoriels: https://developer.Android.com/reference/Android/graphics/drawable/VectorDrawable.html
Et il existe un Android SVG vers VectorDrawable Converter: http://inloop.github.io/svg2Android/
J'ai jeté un œil à https://code.google.com/p/androidsvg/ . Jusqu'à présent, affiché tous les fichiers svg que j'ai lancés dessus. Cela semble prometteur.
Je sais que ma solution est un peu hardcore, mais elle fonctionne très bien, ne nécessite aucune bibliothèque externe (du moins pas dans votre code final) et est extrêmement rapide.
1) Prenez simplement une bibliothèque de chargement SVG existante, comme par exemple svg-Android-2 (qui est un fork de svg-Android mentionné dans une autre réponse, juste avec plus de fonctionnalités et de corrections de bugs): https: // code .google.com/p/svg-Android-2 /
2) Écrivez une application simple qui ne fera rien d'autre que charger et afficher votre image SVG.
3) Modifiez la bibliothèque de chargement SVG, afin qu'elle imprime le code Java qui crée la classe Picture ou l'enregistre dans une variable String.
4) Copiez-collez le code Java obtenu de cette façon dans l'application que vous écrivez.
Pour obtenir plus d'informations sur cette technique et télécharger un exemple de code source, accédez à mon blog: http://androiddreamrevised.blogspot.it/2014/06/transforming-svg-images-into-Android.html
Vous pouvez obtenir un exemple de travail de cette technique sur Google Play ici: https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.svgtodrawablesample
Voici un exemple d'application commerciale créée à l'aide de cette technique (plan du métro de Milan): https://play.google.com/store/apps/details?id=pl.bartoszwesolowski.atmmetroplan
Remarquez la vitesse de chargement de la carte et son apparence, même agrandie.
Check out Support vector drawable . Android studio dispose d'un outil pour convertir les fichiers SVG en fichiers .XML.
lorsque vous utilisez AppCompat avec ImageView (ou des sous-classes telles que ImageButton et FloatingActionButton), vous pourrez utiliser le nouvel attribut app: srcCompat pour référencer les dessins vectoriels (ainsi que tout autre dessin disponible pour Android: src):
À partir de Android Support Library 23.3.0, les drawables vectoriels de support ne peuvent être chargés que via app: srcCompat ou setImageResource ()
Je viens de ranger un dépôt Github et un exemple de dépôt pour ma propre bibliothèque TPSVG, que j'ai initialement créée spécifiquement pour une de mes applications.
Firefox pour Android prend en charge SVG.
Opera Mobile for Android supporte le svg, et Opera Mini supporte le contenu svg statique.