AnimationDrawableが動かない
Androidでは、AnimationDrawableを使うことで複数の画像を組み合わせてアニメーションを作成することが出来ます。
しかし、onCreate()でアニメーションを開始しようとstart()を呼んでも、動いてくれません。
http://code.google.com/p/android/issues/detail?id=1818
によると、UIスレッドの問題ではなく、onCreate()が終わるまでLayout計算が終わらずActivityの初期化が終わらないために動かない、ということのようです。なので、Runnableを継承したクラスをpostすると初期化が行われた後に実行されるので動く、ということです。
具体的には、以下のように記述します。
@Override public void onCreate(Bundle savedInstanceState) { // .... some code ImageView ani = (ImageView)findViewById(R.id.image); ani.setBackgroundResource(R.drawable.inprogress); ani.post(new Starter((AnimationDrawable) ani.getBackground())); } class Starter implements Runnable { AnimationDrawable mAnimation; public Starter (AnimationDrawable a){ mAnimation = a; } public void run() { mAnimation.start(); } }
ちなみに、AnimationDrawableはImageViewのBackgroundだけじゃなくて、普通にsetImageResouceでも設定できます。