Установите непрозрачность PictureDrawable

Мне нужен совет с настройкой непрозрачности на PictureDrawable объект, так как обычно setAlpha() не реализован в PictureDrawable, Мой случай очень похож на этот (я также получаю свои отрисовки из SVG в сырых ресурсах, используя библиотеку). Но я не могу использовать решение, потому что я хотел бы динамически изменять прозрачность (не применяя цветной фильтр при создании).

Контекст анимирует несколько рисованных элементов при рисовании на SurfaceView,

Что может быть хорошим обходным путем в этой ситуации?

Спасибо.

1 ответ

Решение

Кредит идет на @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() использование.

Другие вопросы по тегам