web-dev-qa-db-fra.com

Prise en charge SVG sur Android

Android supporte-t-il SVG? Un exemple?

78
Kakey

La réponse la plus complète est la suivante:

  • Le navigateur par défaut Android 2.x ne prend pas nativement en charge SVG.
  • Les navigateurs par défaut Android 3+ prennent en charge SVG.

Pour ajouter la prise en charge SVG aux versions 2.x de la plateforme, vous avez deux choix de base:

  1. Installez un navigateur plus performant (comme Firefox ou Opera Mobile - les deux prennent en charge SVG)
  2. Utilisez un polyfill JavaScript qui peut analyser SVG et le rendre sur un canevas HTML5

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!

56
Todd

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.

22
pents90

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

8
Abid H. Mujtaba

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

8
Pavel Chernov

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/

8
David Peer

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.

2
Alex

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.

1
Bartek

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

1
Surya

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.

https://github.com/TrevorPage/TPSVG_Android_SVG_Library

https://github.com/TrevorPage/TPSVG_Example1

1
Trevor

Firefox pour Android prend en charge SVG.

0
Zuuum

Opera Mobile for Android supporte le svg, et Opera Mini supporte le contenu svg statique.

0
Erik Dahlström