我需要一条关于为PictureDrawable
对象设置不透明度的建议,因为通常setAlpha()
没有在PictureDrawable
. 我的案例与这个非常相似(我还使用库从原始资源中的 SVG 中获取我的可绘制对象)。但我不能使用该解决方案,因为我想动态更改不透明度(而不是在创建时应用滤色器)。
当在SurfaceView
.
在这种情况下有什么好的解决方法?
谢谢你。
我需要一条关于为PictureDrawable
对象设置不透明度的建议,因为通常setAlpha()
没有在PictureDrawable
. 我的案例与这个非常相似(我还使用库从原始资源中的 SVG 中获取我的可绘制对象)。但我不能使用该解决方案,因为我想动态更改不透明度(而不是在创建时应用滤色器)。
当在SurfaceView
.
在这种情况下有什么好的解决方法?
谢谢你。
归功于@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()
使用指导。