【问题标题】:svg image files androidsvg 图像文件 android
【发布时间】:2012-11-23 05:30:58
【问题描述】:

我正在使用以下代码将 svg 图像渲染到我的 android 应用程序中的 imageview

    ImageView imageView = new ImageView(this);  
    final SVG svg = SVGParser.getSVGFromAsset(getAssets(), "start_4_480.svg");
   imageView.setImageDrawable(svg.createPictureDrawable());

链接:http://code.google.com/p/svg-android/wiki/Tutorial 它工作正常。但是图像的大小是 2 MB(相同的图像在 png 格式中只有几 kbs)。我有很多这样的图像。这增加了我的应用程序的内存。

所以我想考虑使用 svgz 格式的图像(压缩 svg)。谁能告诉我如何将 svgz 图像直接渲染到 android 中的图像视图。请帮忙。还建议我使用其他方法使图像适应不同的屏幕尺寸和不同的文件格式,而不是 svn,这很容易。

【问题讨论】:

  • 您在 APK 中提供了 SVG?那么你不应该担心大小,无论如何压缩包并且图像需要解压缩才能呈现,所以没有增益。

标签: android svg svg-android


【解决方案1】:

his 是对的。如果您将它作为 APK 的一部分进行分发,就像您现在看到的那样,它无论如何都会被压缩,因此无需再次压缩它。

如果您想从远程资源加载它,您可以在调用解析器之前将您的 InputStream 包装在 GZIPInputStream 中。

public static SVG getSVGZFromInputStream(InputStream is) throws SVGParseException {
   SVG svg = null;

   try {
      GZIPInputStream gis = new GZIPInputStream(is);     
      svg = SVGParser.getSVGFromInputStream(gis);
   } catch (IOException e) {
      //handle IO error
   }

   return svg;
}

为了解决您的第二个问题,在您放弃 SVG 以使用另一种文件格式之前,值得研究一下您的 SVG 是否可以优化以使其成为更可接受的大小。有关 SVG 优化的想法,请参阅the answer to this question 如果您的 SVG 仍然很大,通常的做法是为每个分辨率使用多个 PNG。

【讨论】:

    猜你喜欢
    • 2014-04-16
    • 2015-05-23
    • 1970-01-01
    • 2017-01-20
    • 2014-06-04
    • 2021-12-01
    • 2021-05-16
    • 1970-01-01
    • 2022-11-07
    相关资源
    最近更新 更多