1

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 と統合するより良い方法はありますか?

4

1 に答える 1