LayoutAnimationController在隐藏View Group时不起作用,但在显示视图组时起作用

时间:2016-02-10 12:35:49

标签: android animation layout-animation

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)时显示淡出动画时,同样的方法不起作用;

不是一个接一个地隐藏孩子,而是隐藏了父母。

1 个答案:

答案 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",但是在淡出后不会再次弹出这些项目。