2

LayoutAnimationController は、ビュー グループの子をアニメーション化するために使用されます

次のコードを使用して、 LayoutAnimationControllerを使用して、 LinearLayoutの要素をアニメーション効果で 1 つずつ表示しました。

     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 つずつ非表示にする代わりに、親を非表示にします。

4

1 に答える 1

2

子を 1 つずつ非表示にする代わりに、親を非表示にします。

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 に答える