2012-02-18 102 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); 

但同样的办法行不通;