web-dev-qa-db-fra.com

meilleure façon 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 résolutions différentes et la suppression de fichiers pour chaque résolution. Cela devient très gênant lorsque l'application contient de nombreuses icônes ou images.

Quelqu'un peut-il être aussi aimable de donner un processus pas à pas de la bibliothèque la plus simple à utiliser pour utiliser SVG dans Android, je suis sûr que cela en aidera de nombreux autres.

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

111
CommonSenseCode

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

  1. Clic droit sur drawable
  2. Cliquez sur nouveau
  3. Sélectionner un actif vectoriel

Si une image est disponible sur votre ordinateur, sélectionnez le fichier local svg. Après cela, sélectionnez le chemin de l'image et une option permettant de modifier 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 manière, svg l'image est importée dans votre projet. Pour utiliser cette image, suivez la même procédure

@drawable/yourimagename
217
Pallavi Jain

PDATE: NE PAS utiliser cette ancienne réponse, utilisez plutôt ceci: https://stackoverflow.com/a/39266840/4031815

Ok, après quelques heures de recherche, j’ai trouvé que svg-Android était assez facile à utiliser, je vous laisse donc ici des instructions étape par étape:

  1. télécharger lib de: https://code.google.com/p/svg-Android/downloads/list La dernière version au moment de l'écriture est la suivante: svg-Android-1.1.jar

  2. Mettez le bocal dans lib dir.

  3. Enregistrez votre fichier * .svg dans res/drawable dir (dans illustrator, il suffit de cliquer sur Enregistrer sous et de sélectionner svg)

  4. Code de ce qui suit dans votre activité en utilisant la bibliothèque svg:

    _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 comme ceci

Très facilement, j'ai créé une classe simple pour contenir le code passé et réduire le code passe-partout, 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 en 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);
_
16
CommonSenseCode

Android Studio prend en charge le format SVG à partir de à partir de la version 1.4

Voici une vidéo sur comment importer .

11
Pradeep Mahdevu

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

5
Sanny Nagveker

Essayez le plugin SVG2VectorDrawable. Allez dans Préférences-> Plugins-> Parcourir les plugins et installez SVG2VectorDrawable. Idéal pour convertir les fichiers SAG en fichiers vectoriels. Une fois que vous avez installé, vous trouverez une icône pour cela dans la section de la barre d’outils, juste à droite de l’icône d’aide (?).

4
Rahul Thakur
  1. vous devez convertir SVG en XML pour l’utiliser dans le projet Android.

1.1, vous pouvez le faire avec ce site: http://inloop.github.io/svg2Android/ mais il ne supporte pas toutes les fonctionnalités de SVG comme certains dégradés.

1.2, vous pouvez convertir via Android studio, mais certaines fonctionnalités ne prenant en charge que l’API 24 et les versions ultérieures peuvent également être utilisées pour créer votre application sur des appareils plus anciens.

et ajoutez vectorDrawables.useSupportLibrary = true dans le fichier Gradle et utilisez comme ceci:

<Android.support.v7.widget.AppCompatImageView
                Android:layout_width="match_parent"
                Android:layout_height="match_parent"
                app:srcCompat="@drawable/ic_item1" />
  1. utiliser cette bibliothèque https://github.com/MegatronKing/SVG-Android qui prend en charge ces fonctionnalités: https://github.com/MegatronKing/SVG-Android/blob/master/ support_doc.md

ajoutez ce code dans la classe d'application:

public void onCreate() {
    SVGLoader.load(this)
}

et utilisez le SVG comme ceci:

<ImageView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:src="@drawable/ic_Android_red"/>
2
sajad abbasi