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 に答える