Mam ponad 30 pojedynczych bitmap (320x240 pikseli), które chciałbym, aby wyświetlić jeden po drugim w pełnym ekranie na urządzeniach z Androidem powstałych w animacji. Obecnie zaimplementowałem animację za pomocą ImageView i Timera, który ustawia następną klatkę, a następnie wysyła wiadomość, która zastosuje następną klatkę. Wynikowa liczba klatek na sekundę jest bardzo niska: < 2 klatki na sekundę.Draw High Res animacje z dużą liczbą klatek na Androida
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));
Handler:
final Handler animationFrameHandler = new Handler() {
@Override
public void handleMessage(Message message) {
setImageDrawable((Drawable) message.obj);
}
};
Ponieważ chcę osiągnąć klatek do 30 kl./s muszę skorzystać z innego mechanizmu i słyszał Canvas.drawBitmapMesh() i OpenGL.
Jeśli to możliwe chciałbym uniknąć używając OpenGL.
Dziękuję bardzo za podzielenie się wrażeniami!
jak "uruchomić timer, który publikuje następną klatkę do instancji View", możesz podać więcej szczegółów dziękuję – pengwang
Witaj pengwang, zaktualizowałem swoją odpowiedź, aby dać więcej wglądu w moje podejście. nadal są niejasne informacje: –
Dziękuję za wasze wojownicze – pengwang