LayoutAnimationController用于为视图组的子项
设置动画我使用 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)
时显示淡出动画时,同样的方法不起作用;
不是一个接一个地隐藏孩子,而是隐藏了父母。
答案 0 :(得分:2)
不是一个接一个地隐藏孩子,而是隐藏了父母。
要仅在Animation
应用于所有儿童后隐藏父级,请使用AnimationListener
:
lnrContactContainer.setLayoutAnimationListener(new Animation.AnimationListener()
{
@Override
public void onAnimationStart(Animation animation){}
@Override
public void onAnimationEnd(Animation animation)
{
lnrContactContainer.setVisibility(View.GONE)
}
@Override
public void onAnimationRepeat(Animation animation){}
});
顺便说一句,我的fadeout动画需要
set.setFillAfter(true);
尽管我的动画xml文件(在res / anim中)已经包含android:fillAfter="true"
,但是在淡出后不会再次弹出这些项目。