Android:两个ScaleAnimations按顺序执行

时间:2013-04-18 21:30:21

标签: java android

我想垂直设置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方法中呈现的?我不完全确定缩放动画是如何工作的,所以我无法真正掌握如何解决我的问题。

做我想做的事最简单的方法是什么?

谢谢你们:)

1 个答案:

答案 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);