2013-09-29 51 views
0

我想運行一個動畫,然後動畫完成,第二個動畫開始。我編寫這段代碼,但是當我運行這個程序時,動畫不斷運行!並沒有完成。爲什麼?問題是什麼??Animatin經常運行

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

你在onAnimationEnd method.-

circleMore.startAnimation(animation1); 

因此,每animation1結束時再次運行相同的動畫,它會再次啓動,除非你開始不同的動畫與不同的animationListener

0

因爲你開始相同的動畫,animation1,在你的聽衆,所以你已經創建了一個循環。

爲你在onAnimationEnd方法來啓動動畫創建另一個動畫實例。

0

您的問題是,當a1結束時,您再次啓動a1而不是a2。

我建議你在你的動畫中創建一個AnimationSet,你將a2的開始偏移量設置爲a1的持續時間,a3的開始偏移量設置爲a1的持續時間+ a2的持續時間。 然後,您將整個動畫設置應用於視圖,它將播放一個接一個的動畫並在第三個之後結束。