Selon le original question, le résultat final est arrondi-rect png
dans un ImageView
avec une ombre portée d'aspect naturel.Comment empêcher DrawBitmap d'Android de ne dessiner que des images noires?
J'ai l'ombre qui fonctionne, mais quand elle dessine, elle noircit l'image entière.
Comment puis-je éviter l'image d'origine (certainement pas noir) d'être noir lors de l'ajout de l'ombre?
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);
MISE À JOUR:
Je mis en œuvre la suggestion de Josh sur la copie sur l'espace de couleur correcte et maintenant il fonctionne très bien! Pour les futurs chercheurs, , ce code génère une ombre portée sur une vue d'image. Vous pouvez jouer avec les x et y, ainsi qu'avec la constante OUTER pour obtenir l'effet désiré.
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);
Génial! Je suis content que tout cet effort ait été payant. – Josh
Que dois-je faire pour changer la couleur de l'ombre? – Frame91