方法:计算帧动画的时间,通过handler发送一个延迟消息,然后做逻辑处理。
AnimationDrawable animationDrawable = (AnimationDrawable) iv_smaller.getDrawable();
animationDrawable.setOneShot(true);
animationDrawable.start();
// 计算动画执行的时间
int duration = 0;
for(int i=0;i<animationDrawable.getNumberOfFrames();i++){
duration += animationDrawable.getDuration(i);
}
// 通过handler发送一个延迟消息
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
//帧动画执行完,做逻辑处理
iv_smaller.setImageDrawable(null);
// 相对于自己,从中心位置开始缩放
ScaleAnimation scan = new ScaleAnimation(1, 10, 1, 10,
Animation.RELATIVE_TO_SELF,1f
,Animation.RELATIVE_TO_SELF,1f);
scan.setDuration(800);
iv_smaller.startAnimation(scan);
}
}, duration);