2012-12-05 38 views
2

我使用下面的代碼來渲染SVG圖像的ImageView在我的Android應用程序SVG圖像文件的Android

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

您在APK中提供SVG嗎?那麼你不應該擔心它的大小,無論如何壓縮包並且圖像需要被解壓縮才能被渲染,所以在那裏沒有任何收益。 –

回答

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。