2

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)

它隐藏了父级,而不是一个一个地隐藏子级。

4

1 回答 1

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){}
        });

顺便说一句,我需要淡出动画

set.setFillAfter(true);

尽管我的动画 xml 文件(在 res/anim 中)已经包含android:fillAfter="true".

于 2016-02-10T13:29:28.963 回答