在Android中使用SVG的最简单方法是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (139)

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

任何人都可以尽可能一步一步地给出最简单的使用库在Android中使用SVG的过程,我相信这也会对其他人有所帮助。

提问于
用户回答回答于

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

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

现在我可以在活动中这样调用它:

    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);
用户回答回答于

首先,你需要按照svg以下简单步骤导入文件:

  1. 右键单击drawable
  2. 点击新建
  3. 选择矢量资产

如果图像在你的计算机上可用,请选择本地svg文件。之后,选择图像路径,如果需要,还可以在对话框的右侧选择更改图像大小的选项。通过这种方式将svg图像导入到项目中之后使用此图像使用相同的过程:

@drawable/yourimagename

扫码关注云+社区