Android Drop Shadow on View

Я провел несколько обширных поисков примеров кода по этому вопросу, но ничего не могу найти.

В частности, я ищу, чтобы добавить тень для рисования png, которое я использую в ImageView. Этот png-объект для рисования представляет собой скругленный прямоугольник с прозрачными углами.

Может кто-нибудь предоставить пример кода, как добавить приличную тень на вид в коде или в XML?

33
задан coneybeare 25 August 2010 в 15:05
поделиться

1 ответ

Вы можете использовать комбинацию Bitmap.extractAlpha и BlurMaskFilter, чтобы вручную создать тень для любого изображения, которое вам нужно отобразить, но это будет работать только в том случае, если ваше изображение загружается / отображается только один раз. через некоторое время, так как процесс стоит дорого.

Псевдокод (может даже компилироваться!):

BlurMaskFilter blurFilter = new BlurMaskFilter(5, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);

int[] offsetXY = new int[2];
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);

/* Might need to convert shadowImage from 8-bit to ARGB here, can't remember. */

Canvas c = new Canvas(shadowImage);
c.drawBitmap(originalBitmap, offsetXY[0], offsetXY[1], null);

Затем поместите shadowImage в ваш ImageView. Если это изображение никогда не меняется, но часто отображается, вы можете создать его и кэшировать в onCreate, чтобы обойти дорогостоящую обработку изображений.

Даже если это не сработает как есть, этого должно быть достаточно, чтобы вы двигались в правильном направлении.

32
ответ дан 27 November 2019 в 17:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: