¿Cómo evitar que drawBitmap de Android sólo dibuje imágenes en negro?

Según la pregunta original , el resultado final es un png redondeado-rect en un ImageView con una sombra de mirada natural de la gota.

Tengo la sombra trabajando, pero cuando dibuja, hace que toda la imagen sea negra.

texto alternativo

¿Cómo puedo evitar que la imagen original (definitivamente no negra) sea negra al agregar la sombra?

  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); 

ACTUALIZAR:

He implementado la sugerencia de Josh sobre la copia en el espacio de color correcto y ahora funciona muy bien! Para futuros buscadores, este código produce una sombra en una vista de imagen . Puede jugar con las xey, así como la constante EXTERIOR para obtener el efecto deseado.

 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); 

texto alternativo

He comentado en su última pregunta, pero aquí está de nuevo.

El problema puede ser que está dibujando una imagen de 32 bits (el original) en una imagen de 8 bits (la shadowImage extraída). Si ese es el caso, haga algo como

 Bitmap shadowImage32 = shadowImage.copy(ARGB_8888, true); 

Después de la llamada extractAlpha, y dibujar en ese tipo en lugar de la shadowImage de 8 bits.

Tienes que dibujar tanto la imagen de sombra como la imagen original. La imagen de sombra sólo contiene los valores alfa de la imagen original, no los píxeles de color real.

  • Cambiar la forma o la sombra del icono o eliminarlo por completo
  • ListView Sombra de artículo + selector personalizado
  • Cómo eliminar la sombra circundante FloatingActionButton?
  • Cambiar dragshadow en android, mientras arrastra sucede
  • Agregar sombra al ShapeDrawable mediante programación
  • ¿Tiene el sistema operativo Android archivos como / etc / passwd, / etc / shadow y / etc / group?
  • Cómo configurar la sombra de una vista en Android?
  • Android Eliminar sombra en el cajón de navegación
  • Android Drop Shadow en la vista
  • Android No se puede eliminar el color en la parte superior e inferior
  • Cambiar automáticamente el fondo del botón y el aspecto del texto cuando se presiona (como iOS)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.