我想要的是每个动画,从下面的代码开始,像一个序列一样延迟。所以我有这个代码:
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 :(得分:0)
解决方案是创建GridLayoutAnimationController或LayoutAnimationController。
答案 1 :(得分:0)
我使用 LayoutAnimationController 使用以下代码逐个显示带有动画效果的 LinearLayout 中的元素。
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);
但是当我使用它来隐藏 LinearLayout lnrContactContainer.setVisibility(View.GONE)
时显示淡出动画时,同样的方法不起作用;