Asegúrese de que el área del mapa de bits sea transparente al tocar -> de nuevo

Estoy tratando de lograr los mismos resultados que por hilo: Asegúrese de que el área de mapa de bits transparente en el tacto . Me adhiero al código presentado en esta respuesta: Respuesta Lumis y según SteD esta solución debería funcionar.

Lamentablemente no funciona para mí (y también para otro usuario: Asegúrese de que el área de mapa de bits transparente en el tacto no funciona, es dibujar un círculo negro ), sólo estoy recibiendo círculo negro. He intentado muchas cosas pero no conseguir esto resolver. Hacer el fondo transparente según la sugerencia del segundo hilo no hace ninguna diferencia.

Después de muchos experimentos encontré que la transparencia está funcionando, cuando estoy

android:theme="@android:style/Theme.Translucent" 

En mi AndroidManifest.xml puedo ver todo bajo mi aplicación, es decir, escritorio. Fui a través de código muchas veces y no puedo ver el error obvio, sólo la razón por la que pienso es porque este es el orden Z, pero los mapas de bits y lienzo no las órdenes de mantenimiento z. La ordenación de Z se hace dibujando en cierto orden (que es correcto en este código).

¿Es este un extraño ejemplo de optimización en el código android, o me falta algo en el archivo de manifiesto android?

2 Solutions collect form web for “Asegúrese de que el área del mapa de bits sea transparente al tocar -> de nuevo”

Finalmente encontré la solución que está funcionando:

 @Override public void onDraw(Canvas canvas){ super.onDraw(canvas); //draw background canvas.drawBitmap(bgr, 0, 150, null); //copy the default overlay into temporary overlay and punch a hole in it c2.drawBitmap(overlayDefault, 0, 0, null); //exclude this line to show all as you draw c2.drawCircle(X, Y, 80, pTouch); //draw the overlay over the background //canvas.drawBitmap(overlay, 0, 0, null); Paint new_paint = new Paint(/*Paint.ANTI_ALIAS_FLAG*/); new_paint.setXfermode(new PorterDuffXfermode(Mode.SRC_ATOP)); canvas.drawBitmap(overlay, 0, 0, new_paint); } 

Pero no entiendo por qué está trabajando. Fui investigar xfermodes con este código fuente: android Xfermodes demo y de acuerdo a esta imagen: Xfermodes image

No tiene ningún sentido, aparte de que xfermode asegurarse de que el mapa de bits de superposición es bean dibujado segundo (orden Z) y la transparencia llegó a jugar. Pero el orden Z debe mantenerse por orden de dibujo.

Si alguien tiene una mejor idea de cómo resolver esto, por favor, comparta sus conocimientos.

Saludos.

Puede editar el método onDraw ():

 public void onDraw(Canvas canvas){ super.onDraw(canvas); canvas.drawColor(Color.TRANSPARENT); canvas.drawBitmap(bgr, 0, 0, null); c2.drawCircle(X, Y, 10, pTouch); Paint new_paint = new Paint(/*Paint.ANTI_ALIAS_FLAG*/); new_paint.setXfermode(new PorterDuffXfermode(Mode.SRC_ATOP)); canvas.drawBitmap(overlay, 0, 0, new_paint); } 

Lo intenté y funcionó! Espero que esta solución le ayude

  • Frontera blanca junto con la transparencia en "LinearLayout"
  • Cómo obtener una imagen semi transparente en la parte superior de otra imagen para mantener el texto en android (captura de pantalla proporcionada)
  • Android - Ocultar vistas
  • Imagen de png que aparece con fondo gris en android
  • Lienzo transparente de Android (vista de superficie)
  • Cambiar la opacidad del color int en java / android
  • ¿Cómo puedo hacer que una imagen sea transparente en Android?
  • ¿Cómo mostrar la actividad traslúcida?
  • Android-transparent RelativeLayout
  • ¿Cómo puedo configurar el valor alfa de una vista completa en el nivel 7 de api (Android 2.1)
  • ¿Cómo abrir la actividad transparente de UnityPlayerActivity?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.