1、官方文档
http://developer.android.com/guide/topics/resources/animation-resource.html#Frame的实现方式在低版本系统下运行,要让Frame动画在Activity打开时就运行会出现停留在第一帧的情况。
2、解决方案:
①
Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
public boolean queueIdle() {
rocketAnimation.start();
return false; //执行后把当前handler对象从消息队列中移除
}
});
调用Looper.myQueue()方法可以获取当前线程的MessageQueue;
Looper.myQueue().addIdleHandler(handler)在当前线程处理完MessageQueue的事件后,调用handler对象的回调方法。
②
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
rocketAnimation.start();
}
重写onWindowFocusChanged(boolean hasFocus)方法;
当Activity展示给用户时(此时窗口Window对象已完全初始化),onWindowFocusChanged方法就会被调用,此时启动动画就可以成功了。
③http://www.cnblogs.com/felix-hua/archive/2012/09/05/2671874.html另外开线程的方法下次尝试。