【问题标题】:How to load an SVG file from SD Card into an ImageView?如何将 SVG 文件从 SD 卡加载到 ImageView 中?
【发布时间】:2017-02-04 04:21:32
【问题描述】:

我正在尝试使用 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

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

【问题讨论】:

  • 首先,getExternalStoragePublicDirectory() 在大多数 Android 设备上与 removable storage 无关。其次,我认为毕加索不支持 SVG。

标签: android svg picasso


【解决方案1】:

您可以通过在将 SVG 设置为 ImageView 之前将其转换为可绘制对象来实现此目的。为此,有一个不错的库(有点旧且未管理)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();
    }

【讨论】:

    【解决方案2】:

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

    来源:Android — Working with VectorDrawable

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

    【讨论】:

      猜你喜欢
      • 2022-01-27
      • 1970-01-01
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多