создать тень для растрового изображения в пользовательском представлении

У меня есть пользовательский вид, содержащий несколько растровых изображений, и я хочу установить для них тени, для этого я использую этот код:

shadowPaints=new Paint(Paint.ANTI_ALIAS_FLAG);
shadowPaints.setShadowLayer(10.0f, 3.0f, 2.0f, Color.BLACK);
canvas.drawBitmap(bmp, matrix, shadowPaints);   
setLayerType(LAYER_TYPE_SOFTWARE, shadowPaints);

и мой результат: введите здесь описание изображения как вы можете видеть, моя тень на самом деле является другим растровым изображением с другим положением x и y, но я хочу, чтобы моя тень была растровым изображением сплошного цвета.
может ли кто-нибудь помочь мне в этом?


person max    schedule 21.07.2016    source источник
comment
Не могли бы вы опубликовать весь код вашего пользовательского представления?   -  person Divers    schedule 21.07.2016
comment
Спасибо за внимание. это слишком большой код, но если вы покажете мне способ, который работает в простом пользовательском представлении, я уверен, что он будет работать и в моем пользовательском представлении.   -  person max    schedule 21.07.2016


Ответы (1)


setShadowLayer на самом деле предназначен для нанесения теней на текст.

Если вы уже знаете растровое изображение, которое хотите нарисовать, вы можете просто добавить тень в PhotoShop и нарисовать растровое изображение и тень одновременно.

Если вы не хотите этого делать, вы можете создать тень, сделав копию изображения, с помощью фильтра PorterDuff, чтобы сделать все серым, используйте Сценарий рендеринга для размытия изображения и отрисовки его на холсте со смещением x,y перед отрисовкой фактического изображения поверх него.

Лично я думаю, что PhotoShop намного проще.

person kris larson    schedule 21.07.2016