moyen le plus simple d'utiliser svg dans Android?

J'ai trouvé une myriade de bibliothèques afin d'utiliser svg dans Android et d'éviter la création frustrante de différentes résolutions et de déposer des fichiers pour chaque résolution, cela devient très ennuyeux quand l'application a beaucoup d'icônes ou d'images.

Quelqu'un peut-il être aussi aimable pour donner un processus étape par étape de la bibliothèque la plus simple à utiliser pour l'utilisation de SVG dans Android, je suis sûr que cela aidera beaucoup d'autres aussi.

J'utilise aussi Android Studio et Illustrator pour générer mes icônes et images.

0

5 Réponses

MISE À JOUR: NE PAS utiliser cette ancienne réponse, mieux vaut l'utiliser: https://stackoverflow.com/a/39266840/4031815

Ok après quelques heures de recherche, j'ai trouvé svg-android assez facile à utiliser, donc je pars ici pas à pas:

  1. download lib from: https://code.google.com/p/svg-android/downloads/list Latest version at the moment of writing this is: svg-android-1.1.jar

  2. Put jar in lib dir.

  3. Save your *.svg file in res/drawable dir (In illustrator is as easy as pressing Save as and select svg)

  4. Code the following in your activity using the svg library:

    ImageView imageView = (ImageView) findViewById(R.id.imgView);
    SVG svg = SVGParser.getSVGFromResource(getResources(), R.drawable.example);
    //The following is needed because of image accelaration in some devices such as samsung
    imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    imageView.setImageDrawable(svg.createPictureDrawable());
    



Vous pouvez réduire le code standard

Très facile J'ai fait une classe simple pour contenir le code passé et réduire le code standard, comme ceci:

import android.app.Activity;
import android.view.View;
import android.widget.ImageView;

import com.larvalabs.svgandroid.SVG;
import com.larvalabs.svgandroid.SVGParser;

public class SvgImage {

    private static ImageView imageView;
    private Activity activity;
    private SVG svg;
    private int xmlLayoutId;
    private int drawableId;


    public SvgImage(Activity activity, int layoutId, int drawableId) {
        imageView = (ImageView) activity.findViewById(layoutId);
        svg = SVGParser.getSVGFromResource(activity.getResources(), drawableId);
        //Needed because of image accelaration in some devices such as samsung
        imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        imageView.setImageDrawable(svg.createPictureDrawable());
    }
}

Maintenant, je peux l'appeler comme ça dans l'activité:

    SvgImage rainSVG = new SvgImage(MainActivity.this, R.id.rainImageView, R.drawable.rain);
    SvgImage thunderSVG = new SvgImage(MainActivity.this, R.id.thunderImageView, R.drawable.thunder);
    SvgImage oceanSVG = new SvgImage(MainActivity.this, R.id.oceanImageView, R.drawable.ocean);
    SvgImage fireSVG = new SvgImage(MainActivity.this, R.id.fireImageView, R.drawable.fire);
    SvgImage windSVG = new SvgImage(MainActivity.this, R.id.windImageView,R.drawable.wind);
    SvgImage universeSVG = new SvgImage(MainActivity.this, R.id.universeImageView,R.drawable.universe);
0
ajouté
Lorsque j'essaie d'ajouter des fichiers SVG, j'obtiens une erreur indiquant: Erreur: le nom du fichier doit se terminer par .xml ou .png
ajouté l'auteur Sujay U N, source
Vous devriez envisager de marquer votre propre réponse comme acceptée au lieu de la précédente
ajouté l'auteur Cliff Burton, source
Pourquoi imageView static ? Je vois un énorme drapeau de bug rouge ici. SvgImage rainSVG = nouvelle SvgImage (MainActivity.this, R.id.rainImageView, R.drawable.rain); SvgImage thunderSVG = nouvelle SvgImage (MainActivity.this, R.id.thunderImageView, R.drawable.thunder); rainSVG fait référence contient thunderImageView
ajouté l'auteur DSchmidt, source

Android Studio supports SVG from 1.4 onwards

Voici une vidéo sur comment importer .

0
ajouté
merci Pradeep!
ajouté l'auteur commonSenseCode, source
C'est la meilleure réponse. Android Studio le rend très facile!
ajouté l'auteur dustinrwh, source

Vous devez d'abord importer les fichiers svg en suivant des étapes simples.

  1. Faites un clic droit sur le dessinable
  2. Cliquez sur nouveau
  3. Sélectionnez l'élément Vector

Si l'image est disponible dans votre ordinateur sélectionnez ensuite le fichier local svg . Après cela, sélectionnez le chemin de l'image et une option pour changer la taille de l'image est également disponible sur le côté droit de la boîte de dialogue si vous le souhaitez. de cette façon, l'image svg est importée dans votre projet Après cela, pour utiliser cette image, utilisez la même procédure

@drawable/yourimagename
0
ajouté
le bouton Next est toujours désactivé. une idée pourquoi?
ajouté l'auteur mrid, source
exactement ce que je cherchais :)
ajouté l'auteur mohnage7, source
Réponse courte et utile, sans mal de tête lorsque vous importez des fichiers svg externes à projeter.
ajouté l'auteur CodeToLife, source

Try the SVG2VectorDrawable Plugin. Go to Preferences->Plugins->Browse Plugins and install SVG2VectorDrawable. Great for converting sag files to vector drawable. Once you have installed you will find an icon for this in the toolbar section just to the right of the help (?) icon.

0
ajouté
Super plugin - rapidement converti de nombreux svg en drawables vectoriels!
ajouté l'auteur Morten Holmgaard, source
Ne fonctionne pas pour moi - le chemin du fichier SVG n'est même pas téléchargé dans le plugin. La meilleure réponse ci-dessus est beaucoup plus simple et fait le travail.
ajouté l'auteur DaveNOTDavid, source

Plutôt que d'ajouter des bibliothèques qui augmentent la taille de votre apk, je vous suggérerai de convertir Svg en drawable en utilisant http://inloop .github.io/svg2android/. et ajoutez vectorDrawables.useSupportLibrary = true dans gradle,

0
ajouté