2

我正在使用下面的代码将 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,这很容易。

4

1 回答 1

2

是对的。如果您将其作为 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 优化的想法,请参阅此问题的答案 如果您的 SVG 仍然很大,通常的做法是为每个分辨率使用多个 PNG。

于 2012-12-14T16:14:19.347 回答