2013-04-07 149 views
0

我有四個需要加載的圖像。我想要一個動畫播放,等待500毫秒,另一個播放,等待500毫秒,等等。所有的動畫都是將alpha從255更改爲0,然後返回到255.所有四個imageView都需要該動畫。Android ImageView更改alpha動畫

我目前有兩個問題。

1.)所有圖像同時播放。
2.)下次調用該方法時,動畫不起作用。

public void computerLights() 
{ 

    ImageView green = (ImageView)findViewById(R.id.imgViewGreen); 
    ImageView red = (ImageView)findViewById(R.id.imgViewRed); 
    ImageView blue = (ImageView)findViewById(R.id.imgViewBlue); 
    ImageView yellow = (ImageView)findViewById(R.id.imgViewYellow); 

    AlphaAnimation transparency = new AlphaAnimation(1, 0); 

    transparency.setDuration(500); 
    transparency.start(); 
    green.startAnimation(transparency); 
    red.startAnimation(transparency); 
    blue.startAnimation(transparency); 
    yellow.startAnimation(transparency); 
} 

回答

0

我不知道這是否是最好的解決方法,但你可以用,你可以在500周毫秒的時間間隔將消息發送給處理器實現這一目標相當容易。

private int mLights = new ArrayList<ImageView>(); 
private int mCurrentLightIdx = 0; 
private Handler mAnimationHandler = new Handler(){ 

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

     ImageView currentLightIdx = mLights.get(currentLight); 

     AlphaAnimation transparency = new AlphaAnimation(1, 0); 

     transparency.setDuration(500); 
     transparency.start(); 
     currentLight.startAnimation(transparency); 

     currentLightIdx++; 
     if(currentLightIdx < mLights.size()){ 
      this.sendMessageDelayed(new Message(), 500); 
    } 
}; 

public void computerLights() 
{ 

    ImageView green = (ImageView)findViewById(R.id.imgViewGreen); 
    ImageView red = (ImageView)findViewById(R.id.imgViewRed); 
    ImageView blue = (ImageView)findViewById(R.id.imgViewBlue); 
    ImageView yellow = (ImageView)findViewById(R.id.imgViewYellow); 

    mLights.add(green); 
    mLights.add(red); 
    mLights.add(blue); 
    mLights.add(yellow); 

    mAnimationHandler.sendMessage(new Message()); 
} 

發送第一條消息後,處理程序將繼續每隔500ms發送一次消息,直到所有動畫都已啓動。