2014-11-21 6 views
0

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

Контекст - анимация нескольких чертежей при рисовании на SurfaceView.

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

спасибо.

+1

Использование Canvas.saveLayerAlpha, этот метод используется в устройствах pre v4 при рисовании AlphaAnimations – pskink

ответ

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() использования.

Смежные вопросы