2013-11-28 28 views
6

我正在嘗試使用值動畫製作一個接一個地動畫3張圖像,但我無法決定如何在定期間隔後調用三個處理程序..假設有3個圖像,並且即時製作三個處理程序進行動畫製作them.But我能夠把在同一時間三個圖像而不是一前一後在常規intervals.Please幫助Value Animator android

這是我UpdateListener這我從我的處理程序調用

public void startAnimation_image(final ImageView aniView) { 

    animator = ValueAnimator.ofFloat(0, .8f); 
    animator.setDuration(Constants.ANIM_DURATION); 

    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 

     int Low = 10; 
     int High = width-150; 
     int R = (int) ((Math.random() * (High - Low)) + Low); 

     @Override 
     public void onAnimationUpdate(ValueAnimator animation) { 
      float value = ((Float) (animation.getAnimatedValue())).floatValue(); 
      aniView.setTranslationX(R); 

      Log.e("mscale",150*mScale +""); 
      Log.e("value is", value+""); 

      aniView.setTranslationY((mDisplaySize.bottom + (150*mScale))*value); 

      x_point = aniView.getTranslationX(); 
      y_point = aniView.getTranslationY(); 
     } 
    }); 

    animator.addListener(new AnimatorListener() { 

     @Override 
     public void onAnimationStart(Animator arg0) { 

     } 
     @Override 
     public void onAnimationRepeat(Animator arg0) { 

     } 
     @Override 
     public void onAnimationEnd(Animator arg0) { 

      startAnimation(); 
     } 
     @Override 
     public void onAnimationCancel(Animator arg0) { 

     } 
    }); 

    animator.start(); 
} 

這是我的一位經銷商

@Override 
    public void handleMessage(Message msg) { 
     super.handleMessage(msg); 

     //int viewId = new Random().nextInt(STARS.length); 

     id = getApplicationContext().getResources().getIdentifier(STARS[0], "drawable", 
      getApplicationContext().getPackageName()); 

     inflate = LayoutInflater.from(StarsActivity2.this); 


     img[0].setVisibility(ImageView.VISIBLE); 
     img[0].setImageResource(id); 

     mAllImageViews.add(img[0]);   

     LayoutParams animationLayout = (LayoutParams) img[0].getLayoutParams(); 
     img[0].setLayoutParams(animationLayout); 
     Log.e("mHandler",img[0]+ ""); 
     startAnimation_image(img[0]);   
    } 
}; 

有similaarly 3個處理器和三個更新聽衆..請幫助...

回答

2

你可以通過調用

animation.setStartOffset(offset); 

因此,對於三個圖像與時間延遲ANIM_DURATION通過offset毫秒的動畫,你可以(通過將它們作爲參數傳遞給startAnimation_image()可能)使用下列值按順序啓動它們

// note: this is for illustrative purposes. You should put this in a loop 
int firstOffset = 0 * ANIM_DURATION; // starts immediately 
int secondOffset = 1 * ANIM_DURATION; // starts after the first animation is finished 
int thirdOffset = 2 * ANIM_DURATION; // starts after the second animation is finished 
// ... and so on. 
+0

感謝ü非常親愛的 – XylemRaj

相關問題