uilでsvgsを表示しようとしています。次のように、androidsvg ( http://code.google.com/p/androidsvg/ ) を使用して独自のイメージデコーダーを作成しました。
public class SVGImageDecoder implements ImageDecoder {
@Override
public Bitmap decode(ImageDecodingInfo imageDecodingInfo) throws IOException {
Bitmap decodedBitmap = null;
InputStream inputStream = getImageStream(imageDecodingInfo);
SVG svg = null;
try {
svg = SVG.getFromInputStream(inputStream);
} catch (SVGParseException e) {
e.printStackTrace();
}
Picture picture = svg.renderToPicture();
PictureDrawable pictureDrawable = new PictureDrawable(picture);
decodedBitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),
pictureDrawable.getIntrinsicHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(decodedBitmap);
// Clear background to white
canvas.drawRGB(255, 255, 255);
svg.renderToCanvas(canvas);
return decodedBitmap;
}
protected InputStream getImageStream(ImageDecodingInfo decodingInfo) throws IOException {
return decodingInfo.getDownloader().getStream(decodingInfo.getImageUri(), decodingInfo.getExtraForDownloader());
}
}
SVG は表示されますが、次の問題が発生します。
1.) 色と画像がレンダリングおよび表示されない 2.) レンダリングに時間がかかりすぎて、logcat は次のように表示されます。
01-06 23:48:15.310 15505-15506/de.phcom.epaper2 D/dalvikvm﹕ GC_CONCURRENT 解放 2048K、10% 解放 26540K/29187K、一時停止 1ms+29ms 01-06 23:48:15.645 15505-15506/de.phcom.epaper2 D/dalvikvm﹕ GC_CONCURRENT 解放 2046K、10% 解放 26541K/29187K、一時停止 2ms+27ms 01-06 23:48:15.970 15505-15506/de.phcom.epaper2 D/dalvikvm﹕ GC_CONCURRENT 解放 2047K、10% 解放 26542K/29187K、一時停止 1ms+28ms 01-06 23:48:16.305 15505-15506/de.phcom.epaper2 D/dalvikvm﹕ GC_CONCURRENT 解放 2049K、10% 解放 26541K/29187K、一時停止 2ms+29ms 01-06 23:48:16.650 15505-15506/de.phcom.epaper2 D/dalvikvm﹕ GC_CONCURRENT 解放 2051K、10% 解放 26538K/29187K、一時停止 1ms+27ms
では、どうすればパフォーマンスを向上させ、問題を解決できるでしょうか? svgs を uil と統合するより良い方法はありますか?