在图像视图中的png文件上渲染SVG图像

时间:2015-04-20 10:45:42

标签: android svg png android-animation androidsvg

我在布局中的图像视图中加载了一个png文件。然后我有一个svg图像,我需要在该png图像上呈现。

请建议任何可行的方法。

如果您对我的问题有任何澄清,请告诉我。

SVG svg1 = SVGParser.getSVGFromResource(getResources(), R.raw.svg_image1);
    Drawable resID1 = svg1.createPictureDrawable();

    SVG svg2 = SVGParser.getSVGFromResource(getResources(), R.raw.svg_image2);
    Drawable resID2 = svg2.createPictureDrawable();

    SVG svg3 = SVGParser.getSVGFromResource(getResources(), R.raw.svg_image3);
    Drawable resID3 = svg3.createPictureDrawable();

    Drawable mainImage = this.getResources().getDrawable(R.drawable.main_image);

    LayerDrawable ld = new LayerDrawable(new Drawable[]{mainImage, resID1, resID2, resID3}); 
    ld.setLayerInset(1, 1, 1, 1, 1); 

    ImageView imageView = (ImageView) findViewById(R.id.img1);
    imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    imageView.setImageDrawable(ld);

1 个答案:

答案 0 :(得分:2)

有几种方法可以达到你想要的效果。

  1. 您可以使用FrameLayout来堆叠ImageView和SVGImageView。

  2. 您可以将PNG读入位图。然后使用该位图创建一个Canvas。然后将Canvas传递给SVG.renderToCanvas();

  3. 还有其他几个我能想到的。你的问题有点宽泛。最佳解决方案将取决于其他因素,例如渲染后您想要执行的操作。这会是互动的吗?更新并重新绘制?等。