Wie die original question, Das Endergebnis ist eine abgerundete Rect png
in einem ImageView
mit einem natürlich aussehenden Schlagschatten.Wie verhindert man, dass Android drawBitmap nur schwarze Bilder zeichnet?
Ich habe den Schatten arbeiten, aber wenn es zeichnet, macht es das gesamte Bild schwarz.
Wie kann ich verhindern, dass das Originalbild (definitiv nicht schwarz) von schwarz zu sein, wenn die Schatten hinzufügen?
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);
UPDATE:
ich Josh Vorschlag über das Kopieren von über auf den richtigen Farbraum umgesetzt und jetzt funktioniert es super! Für zukünftige Sucher, , erzeugt dieser Code einen Schlagschatten in einer Bildansicht. Sie können mit den X- und Y- sowie der OUTER-Konstante spielen, um den gewünschten Effekt zu erzielen.
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);
Super! Ich bin froh, dass sich diese Mühe gelohnt hat. – Josh
Was muss ich tun, um die Farbe des Schattens zu ändern? – Frame91