0

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

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);
        }
    });
 }

感谢帮助

4

3 回答 3

0

您在方法上再次运行相同的动画onAnimationEnd。-

circleMore.startAnimation(animation1);

因此,每次animation1完成,它都会重新开始,除非你用不同的animationListener.

于 2013-09-29T09:59:25.743 回答
0

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

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

于 2013-09-29T10:00:44.390 回答
0

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

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

于 2013-09-29T10:02:30.017 回答