Easiest way to use SVG in Android? Easiest way to use SVG in Android? android android

Easiest way to use SVG in Android?


First you need to import svg files by following simple steps.

  1. Right click on your project's drawable folder (app/res/drawable)
  2. Click new
  3. Select Vector Asset

If image is available in your computer then select local svg file.After that select the image path and an option to change the size of the image is also available at the right side of dialog if you want to. In this way svg image is imported in your project.

After that for using this image use the same procedure:

@drawable/yourimagename


UPDATE: DO NOT use this old answer, better use this: https://stackoverflow.com/a/39266840/4031815

Ok after some hours of research I found svg-android to be quite easy to use, so I'm leaving here step by step instructions:

  1. download lib from: https://code.google.com/p/svg-android/downloads/listLatest 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 samsungimageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);imageView.setImageDrawable(svg.createPictureDrawable());



You can reduce boilerplate code like this

Very easy I made a simple class to contain past code and reduce boilerplate code, like this:

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

Now I can call it like this in activity:

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


Android Studio supports SVG from 1.4 onwards

Here is a video on how to import.