我找到了无数的库,以便在Android中使用SVG图像,并避免令人沮丧的创建不同的分辨率和为每个分辨率删除文件。当应用程序有很多图标或图像时,这变得非常烦人。

在Android中使用SVG图像的最简单的使用库的一步一步的过程是什么?

我还使用Android Studio和Illustrator来生成我的图标和图像。


当前回答

右键单击可绘制目录,按New,然后转到Vector资产 将资产类型从剪贴画更改为本地 浏览文件 输入大小 然后单击“下一步”,然后单击“完成”

您可用的SVG图像将在可绘制目录中生成。

其他回答

更新:不要使用这个旧答案。最好使用Pallavi Jain的答案

我发现svg-android很容易使用,所以一步一步的说明如下:

Download the library from: https://code.google.com/p/svg-android/downloads/list. The latest version at the moment of writing this is: svg-android-1.1.jar Put the JAR file in the lib directory. Save your *.svg file in the res/drawable directory (in Illustrator, it is as easy as pressing Save as and select .svg) 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());

你可以像这样精简样板代码:

我很容易地做了一个简单的类来包含过去的代码并减少样板代码,如下所示:

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 acceleration in some devices, such as Samsung
        imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        imageView.setImageDrawable(svg.createPictureDrawable());
    }
}

现在我可以在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);

而不是添加库增加你的APK文件大小,我将建议你转换SVG到可绘制使用Android SVG到VectorDrawable。

并添加vectorDrawables。useSupportLibrary = true在Gradle。

1. 您需要将SVG转换为XML,以便在Android项目中使用。

1.1你可以用Android SVG to VectorDrawable做到这一点,但它不支持SVG的所有特性,比如一些渐变。

1.2你可以通过Android Studio进行转换,但它可能会使用一些只支持API 24及更高版本的功能,从而导致你的应用在旧设备上崩溃。

并添加vectorDrawables。在Gradle文件中使用useSupportLibrary = true,并像这样使用它:

<android.support.v7.widget.AppCompatImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:srcCompat="@drawable/ic_item1" />

2. 使用支持这些特性的SVG-Android库

在应用程序类中添加以下代码:

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

然后像这样使用SVG:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_android_red"/>

右键单击可绘制目录,按New,然后转到Vector资产 将资产类型从剪贴画更改为本地 浏览文件 输入大小 然后单击“下一步”,然后单击“完成”

您可用的SVG图像将在可绘制目录中生成。

试试这个:

下一步:

现在编辑图像或图标名称并保存它: