Tengo más de 30 mapas de bits individuales (320x240 píxeles) que me gustaría mostrar uno tras otro en pantalla completa en dispositivos Android, lo que da como resultado una animación. Actualmente implementé la animación usando un ImageView y un temporizador que establece el siguiente fotograma y luego envía un mensaje que aplicará el siguiente fotograma. La velocidad de cuadros resultante es muy baja: < 2 fps.Dibuja animaciones de alta resolución con alta velocidad de cuadro en Android
El temporizador:
animationTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Drawable frame = getNextFrame();
if (frame != null) {
Message message = animationFrameHandler.obtainMessage(1, frame);
animationFrameHandler.sendMessage(message);
}
}
}, 0, (int) (1000.0d/fps));
El manejador:
final Handler animationFrameHandler = new Handler() {
@Override
public void handleMessage(Message message) {
setImageDrawable((Drawable) message.obj);
}
};
Desde que quiero lograr velocidades de cuadro de hasta 30 fps tengo que hacer uso de otro mecanismo y hablar de Canvas.drawBitmapMesh() y OpenGL.
De ser posible, me gustaría evitar el uso de OpenGL.
¡Muchas gracias por compartir tus experiencias!
cómo "tener un temporizador en ejecución que publique el siguiente fotograma a una instancia de Vista", puede dar más detalles gracias – pengwang
Hola pengwang, actualicé mi respuesta para dar más información sobre mi enfoque. Siéntase libre de preguntar si todavía hay cosas poco claras. –
Gracias por su corazón de guerra – pengwang