我想垂直设置ImageView的刻度,等待,然后在同一个ImageView上执行另一个缩放。我简化了下面的代码,但它基本上就是我想做的事情:
ScaleAnimation animate = new ScaleAnimation(1,1,1,2);
animate.setDuration(1000);
animate.fillAfter(true);
ScaleAnimation animateAgain = new ScaleAnimation(1,1,2,1);
animate.setDuration(1000);
animate.fillAfter(true);
view.startAnimation(animate);
view.startAnimation(animateAgain);
我已经尝试了多种方法等待第一个动画完成(Thread.sleep等),但它似乎没有任何区别。我假设动画是在onDraw方法中呈现的?我不完全确定缩放动画是如何工作的,所以我无法真正掌握如何解决我的问题。
做我想做的事最简单的方法是什么?
谢谢你们:)
答案 0 :(得分:1)
有几种方法:
将AnimationListener
附加到动画上。
ScaleAnimation animate = new ScaleAnimation(1,1,1,2);
animate.setDuration(1000);
animate.fillAfter(true);
animate.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
ScaleAnimation animateAgain = new ScaleAnimation(1,1,2,1);
animateAgain.setDuration(1000);
animateAgain.fillAfter(true);
view.startAnimation(animateAgain);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}});
view.startAnimation(animate);
或者,您可以为第二个动画设置动画延迟。
ScaleAnimation animateAgain = new ScaleAnimation(1,1,2,1);
animateAgain.setDuration(1000);
animateAgain.fillAfter(true);
animateAgain.setStartOffset(firstAnimationDuration + delay);