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

  • Cómo hacer que el botón transparente en mi aplicación sea visible
  • Android maps v2 polygon transparencia
  • Superposición transparente GLSurfaceview en la vista existente en android?
  • Android - Ocultar vistas
  • Descripción de los colores en Android (seis caracteres)
  • ImageButton no se resalta en hacer clic con fondo transparente
  • Lienzo transparente de Android (vista de superficie)
  • ¿Cómo puedo configurar el valor alfa de una vista completa en el nivel 7 de api (Android 2.1)
  • Error: Theme.Translucent & FLAG_ACTIVITY_REORDER_TO_FRONT
  • Cómo obtener una imagen semi transparente en la parte superior de otra imagen para mantener el texto en android (captura de pantalla proporcionada)
  • ¿Cómo hacer que el botón no sea transparente?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.