2014-11-21 112 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()使用很好的指導。