2013-04-08 101 views
1

我想從左至右一個一個地動畫9個圖像。我試過編碼,所有的圖像都在同一時間移動。我需要每個圖像都應該一個接一個地移動。如何從左至右一個一個地動畫圖像android

公共類MainActivity擴展活動{

ArrayList<ImageView> imageHolder; 

@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    animateBottles(); 
} 

private void animateBottles() { 
    ImageView upperRowBottleOneImageView = (ImageView) findViewById(R.id.upperRowBottleOneImageView); 
    ImageView upperRowBottleTwoImageView = (ImageView) findViewById(R.id.upperRowBottleTwoImageView); 
    ImageView upperRowBottleThreeImageView = (ImageView) findViewById(R.id.upperRowBottleThreeImageView); 
    ImageView upperRowBottleFourImageView = (ImageView) findViewById(R.id.upperRowBottleFourImageView); 
    ImageView upperRowBottleFiveImageView = (ImageView) findViewById(R.id.upperRowBottleFiveImageView); 
    ImageView upperRowBottleSixImageView = (ImageView) findViewById(R.id.upperRowBottleSixImageView); 
    ImageView upperRowBottleSevenImageView = (ImageView) findViewById(R.id.upperRowBottleSevenImageView); 
    ImageView upperRowBottleEightImageView = (ImageView) findViewById(R.id.upperRowBottleEightImageView); 
    ImageView upperRowBottleNineImageView = (ImageView) findViewById(R.id.upperRowBottleNineImageView); 

    imageHolder = new ArrayList<ImageView>(); 

    imageHolder.add(upperRowBottleOneImageView); 
    imageHolder.add(upperRowBottleTwoImageView); 
    imageHolder.add(upperRowBottleThreeImageView); 
    imageHolder.add(upperRowBottleFourImageView); 
    imageHolder.add(upperRowBottleFiveImageView); 
    imageHolder.add(upperRowBottleSixImageView); 
    imageHolder.add(upperRowBottleSevenImageView); 
    imageHolder.add(upperRowBottleEightImageView); 
    imageHolder.add(upperRowBottleNineImageView); 

    for (int i = 0; i < imageHolder.size(); i++) { 
     ImageView imageView = imageHolder.get(i); 

     ObjectAnimator mover = ObjectAnimator.ofFloat(imageView, 
       "translationX", -150f, 50f); 
     mover.setDuration(4000); 

     AnimatorSet animatorSet = new AnimatorSet(); 
     animatorSet.play(mover); 
     animatorSet.start(); 
     mover.addListener(new AnimatorListener() { 

      @Override 
      public void onAnimationCancel(Animator arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onAnimationEnd(Animator arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onAnimationRepeat(Animator arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onAnimationStart(Animator arg0) { 
       // TODO Auto-generated method stub 

      } 

     });} 

     //try { 
      //Thread.sleep(1000); 
     //} catch (InterruptedException e) { 
     // // TODO Auto-generated catch block 
      //e.printStackTrace(); 
     //} 
    //} 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

}

回答

0

爲了通過一個動畫圖像一個你必須設置一個起始偏移延遲像每個圖像:

for (int i = 0; i < imageHolder.size(); i++) { 
     ImageView imageView = imageHolder.get(i); 

     TranslateAnimation animation = new TranslateAnimation(fromX, ToX, FromY, ToY); 
     animation.setDuration(400); 
     animation.setStartOffset(100*i); 

     imageView.startAnimation(animation); 
} 
+0

如何當它改變時,我可以對這些圖像設置淡入淡出效果嗎? – 2014-07-21 04:34:56

相關問題