动画不断运行

时间:2013-09-29 09:56:11

标签: android animation

我想运行一个动画,然后动画一个完成,第二个动画开始。我写这段代码但是当我运行这个程序时,动画会不断运行!并没有完成。为什么?有什么问题??

public class Splash extends Activity{

Animation animation1;
Animation animation2;
Animation animation3;
ImageView image;
ImageButton circleProduct; 
ImageButton circleIntroduce;
ImageButton circleMore;
ImageButton circleContact;

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    animation1=AnimationUtils.loadAnimation(this, R.anim.bounce);

    circleProduct=(ImageButton)findViewById(R.id.btnCircleProduct);
    circleIntroduce=(ImageButton)findViewById(R.id.btnCircleIntroduce);
    circleMore=(ImageButton)findViewById(R.id.btnCircleMore);
    circleContact=(ImageButton)findViewById(R.id.btnCircleContact);

    image=(ImageView)findViewById(R.id.img);
    image.startAnimation(animation1);

    animation1.setAnimationListener(new Animation.AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // TODO Auto-generated method stub
            circleProduct.setVisibility(View.VISIBLE);
            circleProduct.startAnimation(animation1);
            circleContact.setVisibility(View.VISIBLE);
            circleContact.startAnimation(animation1);
            circleIntroduce.setVisibility(View.VISIBLE);
            circleIntroduce.startAnimation(animation1);
            circleMore.setVisibility(View.VISIBLE);
            circleMore.startAnimation(animation1);
        }
    });
 }

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

您正在onAnimationEnd方法再次运行相同的动画.-

circleMore.startAnimation(animation1);

因此,每次animation1完成后,它都会重新开始,除非您使用不同的animationListener启动不同的动画。

答案 1 :(得分:0)

因为您在侦听器中启动相同的动画animation1,所以您创建了一个循环。

为您必须在onAnimationEnd方法中启动的动画创建另一个动画实例。

答案 2 :(得分:0)

你的问题是当a1结束时你再次启动a1而不是a2。

我建议你从你的动画中形成AnimationSet,你可以将a2的起始偏移设置为a1的持续时间,将a3的起始偏移设置为a1的持续时间+持续时间a2。 然后将整个动画集应用于视图,它将一个接一个地播放动画并在第三个动画之后结束。