我想运行一个动画,然后动画一个完成,第二个动画开始。我写这段代码但是当我运行这个程序时,动画会不断运行!并没有完成。为什么?有什么问题??
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);
}
});
}
感谢您的帮助
答案 0 :(得分:0)
您正在onAnimationEnd
方法再次运行相同的动画.-
circleMore.startAnimation(animation1);
因此,每次animation1
完成后,它都会重新开始,除非您使用不同的animationListener
启动不同的动画。
答案 1 :(得分:0)
因为您在侦听器中启动相同的动画animation1
,所以您创建了一个循环。
为您必须在onAnimationEnd
方法中启动的动画创建另一个动画实例。
答案 2 :(得分:0)
你的问题是当a1结束时你再次启动a1而不是a2。
我建议你从你的动画中形成AnimationSet
,你可以将a2的起始偏移设置为a1的持续时间,将a3的起始偏移设置为a1的持续时间+持续时间a2。
然后将整个动画集应用于视图,它将一个接一个地播放动画并在第三个动画之后结束。