Ab einem AnimationDrawable in Android
Wo soll ich anfangen ein AnimationDrawable
muss animiert werden, wenn die Aktivität angezeigt wird?
Den developer guide empfiehlt mit onWindowFocusChanged
, aber dies ist nicht immer aufgerufen, wenn die Aktivität ist Teil eines TabHost
.
Ich zitiere:
Es ist wichtig zu beachten, dass die
start () - Methode aufgerufen, die
AnimationDrawable kann nicht aufgerufen werden
während der onCreate () - Methode des
Aktivität, weil die
AnimationDrawable ist noch nicht vollständig
am Fenster angebracht. Wenn Sie wollen
spielen Sie die animation ab sofort
ohne Interaktion, dann
möchten Sie vielleicht rufen Sie es von der
onWindowFocusChanged () - Methode in Ihrer
Aktivität, die aufgerufen werden, wenn
Android bringt Ihr Fenster in den Fokus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den parallel-thread-Ansatz scheint zu sein, das beliebteste, aber es hebt 2 wesentliche Probleme:
So, ich schlage vor, mit dem sehr passenden Namen runOnUiThread () - Methode. Der Aufruf in onResume() wird sichergestellt, dass Ihre animation code wird im Hauptthread ausgeführt, dass es laufen würde, nachdem das Fenster befestigt ist, solltest du genau wissen, wo die Nachricht verarbeitet werden und keine Kätzchen müssen Ihr Leben verlieren:
Ich weiß, diese Frage ist ein bisschen alt, aber dies kann hilfreich sein, um jemanden passiert über diese Frage, wie ich es Tat. Eine Möglichkeit, dass ich mein AnimationDrawable ist, ist durch die Schaffung einer neuen Runnable und Verwendung der post-Methode aus der Bildansicht.
Das können Sie gerne tun:
Der Aktivität
onResume()
wird immer dann aufgerufen, wenn die Activity kommt in den Vordergrund. Starten Sie es dort.Gemäß der Dokumentation ausgeführt haben, müssen Sie warten, bis die Anzeige angebracht ist, die Fenster vor Beginn der animation. Dafür, Sie sollten hinzufügen, ein
OnAttachStateChangeListener
zu der Ansicht, die ausgeführt wird, wenn es angehängt wurde, und starten Sie die animation von dort aus.