0

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

做我想要完成的事情的最简单方法是什么?

多谢你们 :)

4

1 回答 1

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);
于 2013-04-18T21:40:16.393 回答