Я провел несколько обширных поисков примеров кода по этому вопросу, но ничего не могу найти.
В частности, я ищу, чтобы добавить тень для рисования png, которое я использую в ImageView. Этот png-объект для рисования представляет собой скругленный прямоугольник с прозрачными углами.
Может кто-нибудь предоставить пример кода, как добавить приличную тень на вид в коде или в XML?
Вы можете использовать комбинацию 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, чтобы обойти дорогостоящую обработку изображений.
Даже если это не сработает как есть, этого должно быть достаточно, чтобы вы двигались в правильном направлении.