Me parece que DrawBitMap está tardando 50-60 ms en dibujar solo tres mapas de bits, uno es un rectángulo que ocupa la pantalla completa, uno es un círculo y otro es un Camino. Mis bitmaps se crean utilizando Canvas.drawPath, drawRect y drawCircle en un mapa de bits en blanco con Bitmap.Config como ARGB_8888. Estoy usando ARGB_8888 para hacer que el fondo sea visible para obtener un efecto de superposición. Me quedé sorprendido al encontrar que el tiempo necesario era de unos 50 ms, ya que pensé que drawBitmap sería una operación muy simple. ¿Puede alguien guiarme si hay algún error fundamental que estoy cometiendo? Lo que sigue es mi códigoAndroid DrawBitMap muy lento cuando se usa ARGB_8888
Creación de los mapas de bits en blanco
Rectangle = Bitmap.createBitmap(320,480,Bitmap.Config.ARGB_8888);
Circle = Bitmap.createBitmap(70,70,Bitmap.Config.ARGB_8888);
Leaf1 = Bitmap.createBitmap(20,30,Bitmap.Config.ARGB_8888);
Dibujo las formas de la memoria de imagen apropiada
Canvas c = new Canvas(Rectangle);
Paint p = new Paint();
p.setAntiAlias(true);
p.setColor(0xff6e8b3e);
c.drawRect(0,0,320,480,p);
Canvas c = new Canvas(Circle);
Paint p = new Paint();
CirclePath = new Path();
p.setAntiAlias(true);
p.setColor(0xffcd661d);
System.out.println("x = "+x+" y = "+y);
CirclePath.addCircle(50,50,10,Path.Direction.CW);
c.drawPath(CirclePath,p);
Canvas c = new Canvas(Leaf1);
Paint paint = new Paint();
Path path = new Path();
paint.setAntiAlias(true);
path.moveTo((float)184.37,(float)219.15);
path.cubicTo((float)188.32,(float)219.15,(float)192.88,(float)220.44,(float)195.62,(float)223.54);
path.cubicTo((float)197.84,(float)226.05,(float)203.2,(float)229.84,(float)198.18,(float)245.98);
Dibujo del mapa de bits en OnDraw
canvas.drawBitmap(Rectangle,0,0,p);
canvas.translate(x,y); // For animation effect
canvas.drawBitmap(Circle,0,0,p);
canvas.drawBitmap(Leaf1,0,0,p);
Ahora cuando grabo el tiempo tomado para este drawBitMap, me parece que está tomando alrededor de 50ms ¿Hay algún error de gran envergadura en el código? Cambiar el Bitmap.Config a RGB_565 reduce el tiempo a alrededor de 8ms pero luego el fondo no es visible y obtengo un recuadro negro alrededor de la ruta
Sí canal alfa se está utilizando ya que quiero que el fondo se muestre correctamente alrededor de la imagen. Y sí, el objetivo es rotar y escalar también, así que estoy usando anti-aliasing. Básicamente, estoy diseñando un reproductor SVG que hace animación de gráficos vectoriales, por lo que el mapa de bits se construye utilizando funciones drawPath y luego se dibuja un mapa de bits en la pantalla para cada cuadro –