2014-11-21 77 views
0

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

当在SurfaceView上绘图时,上下文将动画多个可绘图。

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

谢谢。

+1

使用Canvas.saveLayerAlpha,这个方法用于绘制AlphaAnimations前的v4设备 – pskink 2014-11-21 21:20:35

回答

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()使用很好的指导。