2013-11-28 6 views
6

値アニメーターを使用して3つのイメージを1つずつアニメーションしようとしていますが、一定間隔で3つのハンドラーを呼び出す方法を決めることができません.3つのイメージがあり、 them.Butは、私はこれは私がこれは私のハンドラから値アニメーターandroid

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

を呼び出しています私のUpdateListenerで定期intervals.Pleaseヘルプで

一度に三つの画像をもたらすことができていなく次々私のハンドラーの1人

@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つのハンドラと3人の更新リスナーがあなたは、期間ANIM_DURATIONとの三つの画像のためにそう

animation.setStartOffset(offset); 

を呼び出すことによってoffset MSにてごアニメーションを遅らせることができます...

答えて

2

を助けてください..あります次の値を使用して順番に開始することができます(おそらくパラメータとして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

関連する問題