¿Cómo puedo anular onDraw
para tomar lo que se dibujó (como un mapa de bits) y transformarlo?Anular onDraw para cambiar cómo se produce el dibujo (Android)
El siguiente método funciona, pero desafortunadamente, este método implica la creación de un mapa de bits del tamaño de toda la pantalla, no solo del área que se dibuja. Si uso esto para dibujar elementos UI, se vuelve a dibujar para cada elemento UI. ¿Se puede hacer esto de manera más eficiente?
@Override
protected void onDraw(Canvas canvas) {
//TODO: Reduce the burden from multiple drawing
Bitmap bitmap=Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Config.ARGB_8888);
Canvas offscreen=new Canvas(bitmap);
super.onDraw(offscreen);
//Then draw onscreen
Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);
}
¿No se crea demasiada recolección de elementos no utilizados si se crean objetos nuevos en el método de dibujo? – Srin