2011-04-20 77 views
2

這是我的場景。Android動畫相繼

起初,我做了一個動畫設置爲我的視圖(View.startAnimation(animationSet)),其中animationSet包含Translate + Rotate + Scale全部同時。它工作正常。 on the animationSet我有fillAfter(true)。 經過一段時間用戶點擊一個按鈕,onClick我必須在同一視圖上啓動新的ScaleAnimation。所以如果我這樣做:

@Override 
public void onClick(View v) { 
    ScaleAnimation scaleAnimation = new ScaleAnimation(mOldScaleFactor, mScaleFactor, mOldScaleFactor, mScaleFactor, mPivotX, mPivotY); 
    scaleAnimation.setDuration(ANIMATION_DURATION_MILIS); 
    scaleAnimation.setStartOffset(ANIMATION_OFFSET_MILIS); 
    scaleAnimation.setFillAfter(true); 
    v.startAnimation(scaleAnimation); 
} 

所有以前的動畫(Translate + Rotete + Scale)都被遺忘了。

如何從舊動畫結束的地方開始新動畫?

回答

2

你可以嘗試實現一個監聽器,並可能從上次動畫停止時捕獲信息,但我不確定你能夠查詢動畫的狀態。另一種選擇是確保動畫停止在已知狀態。這樣你就可以知道你需要如何開始下一個動畫。

public float param1; 

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

    //load text view to add animation 
    ImageView image1 = (ImageView) findViewById(R.id.splash_imageView1); 
    Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_anim); 
    image1.startAnimation(fade1); 
    fade1.setAnimationListener(new AnimationListener() { 
     public void onAnimationEnd(Animation animation) { 
      //interrogate animation here 
     }