Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿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.

  • Admob La orientación intersticial se bloquea en la orientación inicial del dispositivo al arrancar
  • Android Cómo agregar un archivo xml personalizado en res / values ​​y cómo registrar customvalues.xml con el sistema
  • ¿Cómo en realidad BOND un dispositivo?
  • Botón My-Location de GoogleMaps v2 Android, no se muestra
  • ¿Cómo puedo obtener el icono de la aplicación del nombre del paquete?
  • Mapa de Google para android mi botón personalizado de ubicación
  • 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

  • Solución automática de estudio de Android
  • Android Studio no puede iniciar git, aunque en realidad puede
  • Las insignias de funciones de Google Play Games no están visibles en Google Play
  • Android - using runOnUiThread para hacer cambios de interfaz de usuario desde un subproceso
  • Obtener el tamaño de ems de una cadena en Android
  • Cómo crear un botón de acción flotante (FAB) en android, utilizando AppCompat v21?
  • 2 Solutions collect form web for “¿Cómo evitar que drawBitmap de Android sólo dibuje imágenes en negro?”

    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.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.