2012-02-18 77 views
4

我想要的是,從下面的代碼,每個動畫開始延遲,就像一個序列。所以我有這個代碼:Android如何在多個動畫中添加一些延遲?

public void setAnimation(){ 
     View view; 
     String animation = prefs.getString("animations", "Scale"); 
     String interpolator = prefs.getString("interpolators", "Bounce"); 
     Animation animate = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.scale_in); 
     for(int i=0; i<gridView.getChildCount(); i++){ 
      view = gridView.getChildAt(i); 

      view.startAnimation(animate); 
     } 
    } 

因爲有一個for循環,所有兒童動畫將立即開始。我已經嘗試過:

Thread.sleep.... 
Handler... 
animate.setStartTime... 
animate.setStartOffset... 

但所有兒童動畫立即開始。提前

animate.setAnimationListener(new AnimationListener(){ 
    public void onAnimationEnd(Animation arg0) { 
     view.startAnimation(animate); 
    } 

    public void onAnimationRepeat(Animation arg0) { 
    } 

    public void onAnimationStart(Animation arg0) { 
    } 

}); 

感謝名單:

這個方法我試過循環的內部,動畫將無法啓動。

+0

添加一個動畫監聽器,當一個動畫完成時開始下一個 – Blundell 2012-02-18 13:11:32

回答

0

解決方案是創建一個GridLayoutAnimationController或LayoutAnimationController。

0

我用LayoutAnimationController通過一個使用以下代碼來顯示元件的LinearLayout與動畫效果之一。當我用它來顯示淡出動畫,同時隱藏的LinearLayoutlnrContactContainer.setVisibility(View.GONE)

 Animation fadeIn = AnimationUtils.loadAnimation(context, R.anim.anim_fade_in); 
//lnrContactContainer is LinearLayout. 
      AnimationSet set = new AnimationSet(true); 
      set.addAnimation(fadeIn); 
      set.setDuration(500); 
      controller = new LayoutAnimationController(set, 1f); 
      lnrContactContainer.setLayoutAnimation(controller);   
      lnrContactContainer.setVisibility(View.VISIBLE); 

但同樣的辦法行不通;