0

我需要一条关于为PictureDrawable对象设置不透明度的建议,因为通常setAlpha()没有在PictureDrawable. 我的案例与这个非常相似(我还使用库从原始资源中的 SVG 中获取我的可绘制对象)。但我不能使用该解决方案,因为我想动态更改不透明度(而不是在创建时应用滤色器)。

当在SurfaceView.

在这种情况下有什么好的解决方法?

谢谢你。

4

1 回答 1

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();

这个答案还提供了很好的saveLayerAlpha()使用指导。

于 2014-11-21T22:17:50.003 回答