複数画像を使ったパラパラアニメを作るために使うAnimationDrawableですが、なかなかのクセモノです。
その1
Activityの起動と同時にアニメーションを開始したい場合は、onWindowFocusChangedでstartしてやらないと動きません。そう、onCreateやonResumeでstartしてもビクともしません。
これは、その時点ではAnimationDrawableが画面上に準備できてないからです。
その2
startしたらstopしましょう。そう、stopではなく描画の関係で止まったアニメーションを再開させようとstartを再度呼んでもビクともしません。 startの前にstopするようにしたらいいんじゃないっすかね。
その3
ActivityGroupなどを使っていると画面遷移で止まったりします。そう、この時はonWindowFocusChangedが呼ばれないためビクともしません。
これは、別スレッドを利用して回避できるようです。
onResumeで
runOnUiThread(new Runnable() {
@Override
public void run() {
animation.start();
}
});
とかしてやると動きます。注:どっかでstopしてね。
以上です。
0 件のコメント:
コメントを投稿