如何将SD卡中的SVG文件加载到ImageView中?

时间:2017-02-03 19:16:17

标签: android svg picasso

我正在尝试使用Picasso加载下载到sd卡中的svg文件,但它不起作用。

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()+"/secciones.svg");
Picasso.with(context).load(file).into(holder.ivIcon);

之前我发现了这个问题,但他从资产中加载了该文件。 Load a vector drawable into imageview from sd card

是否可以加载下载到imageView中的.svg?

2 个答案:

答案 0 :(得分:1)

您可以通过在将SVG设置为ImageView之前将SVG转换为drawable来实现此目的。为此目的,有一个很好的图书馆(有点旧和未经管理)Here,但我尝试并为我工作。代码如下:

File dir = Environment.getExternalStorageDirectory();
    File yourFile = new File(dir, "your_file_path/filename.svg");
    try {
        FileInputStream fileInputStream = new FileInputStream(yourFile);
        SVG svg = SVGParser.getSVGFromInputStream(fileInputStream);
        Drawable drawable = svg.createPictureDrawable();
        imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        imageView.setImageDrawable(drawable);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

我们不能将SVG与Android应用程序一起使用。 (是的......我们可以使用第三方库来处理SVG文件)

来源:Android — Working with VectorDrawable

VectorDrawable图像只是xml文件,其中包含图像的所有信息(如线条​​,曲线等)以及与每个图像相关的颜色。使用vectorDrawable的最大优点是我们只需要一个图像用于不同的屏幕设备。这不仅减少了最终apk的大小,还简化了项目的维护。