我使用以下代码将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,这使得这很容易。
答案 0 :(得分:2)
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。