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


Limpiar el lienzo con Canvas.drawColor ()

Estoy tratando de cambiar la imagen de fondo de una vista personalizada con cierto éxito. La imagen cambiará pero el problema es que todavía veo rastros de la vieja imagen. Cuando intento despejar el lienzo antes de dibujar la nueva imagen, no parece trabajar. I crear un mapa de bits para almacenar la imagen. Al cambiar la imagen, llamo a Canvas.drawColor () antes de dibujar la nueva imagen pero la imagen antigua persiste. He intentado drawColor (0), drawColor (Color.BLACK), c.drawColor (0, PorterDuff.Mode.CLEAR), y ninguno de los trabajos anteriores. Como tal, tuve que publicar esto para la revisión de las mentes más experimentadas que la mía.

El código real es como sigue:

  • Android: windowSoftInputMode = "adjustResize" no hace ninguna diferencia?
  • RelativeLayout - Desplazamiento hacia abajo
  • ¿Cómo probar el rendimiento de una aplicación de Android?
  • LockCanvas () devuelve diferentes lienzos
  • Cómo solucionar los problemas de seekbar-bar-thumb-centering
  • Android Anotaciones: Clase anotada Xyz_ no encontrando su original ("no se puede encontrar la clase de símbolo Xyz")
  • private int bgnd; private boolean switching; public void setBgnd(int incoming){ switching = true; switch (incoming){ case R.drawable.image1: bgnd = incoming; this.invalidate(); break; case R.drawable.image2: bgnd = incoming; this.invalidate(); break; } } protected void onDraw(Canvas c){ if(switching == true){ Bitmap b = BitmapFactory.decodeResource(getResources(), bgnd); c.drawColor(0, PorterDuff.Mode.CLEAR); c.drawBitmap(b, 0, 0, null); switching = false; }else{ Bitmap b = BitmapFactory.decodeResource(getResources(), bgnd); c.drawBitmap(b, 0, 0, null); } } 

  • Android TV RecyclerView interacción con el foco
  • Ancho de navegación de la lista de acciones - envolver contenido
  • Preferencias compartidas dentro de broadcastreceiver
  • Android facebook SDK haciendo error java.lang.NoClassDefFoundError
  • Retrofit y manejo centralizado de errores
  • Intervalo de tiempo de conexión BLE de Android
  • 3 Solutions collect form web for “Limpiar el lienzo con Canvas.drawColor ()”

    Al igual que usted, luché cómo borrar una capa superior / superficie en mi aplicación de capas múltiples / superficie. Después de 2 días de búsqueda y codificación, me enteré de mi propio camino y esto es cómo he aclarado un lienzo antes de dibujo, se puede utilizar al tener múltiples capas / superficiales. La capa de fondo no se cubrirá con negro, que es el truco.

     Paint paint = new Paint(); paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR)); canvas.drawPaint(paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC)); // start your own drawing 

    ¿No necesita llamar también invalidate () desde dentro de su método onDraw, para que los cambios realizados en ese onDraw se actualicen en la pantalla?

    El invalidate () en su switch invocará su onDraw después de llamar a setBgnd, pero no hay nada que diga que se vuelva a dibujar después de haber realizado cambios en el Canvas.

    Puede utilizar el método drawRGB .

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