Согласно исходному вопросу , конечный результат - округленный прямоугольник png
в ImageView
с естественной тенью.
У меня работает тень,но когда он рисует, он делает все изображение черным.
![alt text](https://i.stack.imgur.com/kZJF4.png)
Как можно предотвратить исходное изображение (определенно не черное) от черного при добавлении тени?
BlurMaskFilter blurFilter = new BlurMaskFilter(2, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);
int[] offsetXY = new int[2];
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pier_t);
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);
Canvas c = new Canvas(shadowImage);
c.drawBitmap(originalBitmap, -offsetXY[0], -offsetXY[1], null);
imageView.setImageBitmap(shadowImage);
ОБНОВЛЕНИЕ:
Я реализовал предложение Джоша о копировании в правильное цветовое пространство, и теперь оно отлично работает!Для будущих пользователей, , этот код создает тень на изображении .Вы можете поиграть с x и y, а также с константой OUTER, чтобы получить желаемый эффект.
BlurMaskFilter blurFilter = new BlurMaskFilter(2, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);
int[] offsetXY = new int[2];
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pier_t);
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);
Bitmap shadowImage32 = shadowImage.copy(Bitmap.Config.ARGB_8888, true);
Canvas c = new Canvas(shadowImage32);
c.drawBitmap(originalBitmap, -offsetXY[0], -offsetXY[1], null);
imageView.setImageBitmap(shadowImage32);
![alt text](https://i.stack.imgur.com/bzBZW.png)