Ho 30 + bitmap singoli (320x240 pixel) che vorrei per visualizzare uno dopo l'altro a schermo intero su dispositivi Android con conseguente un'animazione. Attualmente ho implementato l'animazione utilizzando un ImageView e un Timer che imposta il fotogramma successivo e quindi invia un messaggio che applicherà il fotogramma successivo. Il frame rate risultante è molto basso: < 2 fps.Disegnare res alti animazioni con frame rate elevato su Android
Il timer:
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));
Il gestore:
final Handler animationFrameHandler = new Handler() {
@Override
public void handleMessage(Message message) {
setImageDrawable((Drawable) message.obj);
}
};
Dal momento che voglio raggiungere un frame rate fino a 30 fps devo fare uso di un altro meccanismo e sentito parlare di Canvas.drawBitmapMesh() e OpenGL.
Se possibile, vorrei evitare di utilizzare OpenGL.
Grazie per aver condiviso le tue esperienze!
come "avere un timer in esecuzione che registra il prossimo frame su un'istanza View", puoi dare un dettaglio in più grazie – pengwang
Ciao pengwang, ho aggiornato la mia risposta per dare ulteriori approfondimenti sul mio approccio. ci sono ancora cose poco chiare –
Grazie per il tuo cuore spensierato – pengwang