我想设置按钮的动画(即旋转、平移),然后更改按钮的文本。不幸的是,它总是先更改按钮的文本,然后再做动画。
我该如何实现我的目标?
请帮我
我的代码是这样的;
AnimationSet set = new AnimationSet(true);
Animation anim1 = new RotateAnimation(0, 360, 500, 750);
anim1.setDuration(3000);
anim1.setFillAfter(true);
set.addAnimation(anim1);
Animation anim2 = new RotateAnimation(0, 360, 1024, 824);
anim2.setDuration(3000);
anim2.setFillAfter(true);
set.addAnimation(anim2);
anim2.setStartOffset(3000);
first.clearAnimation();
set.setFillAfter(true);
first.startAnimation(set);
numbers[0]=min + (int)(Math.random() * ((max - min) + 1));
您的代码启动动画,但没有阻塞:一旦启动动画,程序就会继续。
您可以尝试获取一个处理程序,并在正确的时间发布更改文本事件:
Handler mHandler=new Handler();
Runnable lRunnable =new Runnable()
{
public void run()
{
//Your change text code
}
};
mHandler.postDelayed(lRunnable , 3000); // Or any other duration so you have the right effect
更好的解决方案是向动画中添加一个AnimationListener,或者如果您在JB上,则使用视图属性animators和withEndAction()
方法。如果可能的话,应该避免使用旧的动画框架。它实际上并没有改变属性,只是通过转换绘制视图。
set.setAnimationListener(new AnimationListener() {
public void onAnimationEnd() {
// ...
}
public void onAnimationStart() {
}
public void onAnimationRepeat() {
}
}
但如果可以使用视图属性动画,我建议您使用它们。和他们一起工作要好得多。