2012年2月24日金曜日

AnimationDrawableを使うときの注意点

Androidネタです。 
複数画像を使ったパラパラアニメを作るために使う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 件のコメント: