将不透明度设置为PictureDrawable

时间:2014-11-21 21:03:21

标签: android surfaceview android-drawable androidsvg

我需要一个建议,为PictureDrawable对象设置不透明度,因为setAlpha()中没有实现PictureDrawable。 我的情况与this one非常相似(我也使用库从原始资源中获取SVG的可绘制内容)。但我无法使用该解决方案,因为我想动态更改不透明度(而不是通过在创建时应用滤色器)。

SurfaceView上绘图时,上下文会为多个绘图设置动画。

在这种情况下,什么可能是一个好的解决方法?

谢谢。

1 个答案:

答案 0 :(得分:0)

归功于@pskink,我稍后会详细说明它以供进一步参考。 这就是我在onDraw(Canvas canvas)方法中做的事情(在我的情况下int opacity从0到255迭代地改变):

int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();

canvas.saveLayerAlpha(x, y, x + width, y + height, opacity,
                                  Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);

drawable.setBounds(x, y, x + width, y + height);
drawable.draw(canvas);
canvas.restore();

This answer还为saveLayerAlpha()用法提供了很好的指导。