1

ビューをView.GONEおよびView.VISIBLEに設定すると、いくつかのアニメーションをトリガーするために、レイアウト遷移を使用しています。

それは機能しています。どのビューをいつアニメーション化するかを伝えるために使用している4つのフラグがあります。これらは:

LayoutTransition.APPEARING - 可視に設定されたビューをアニメーション化します。LayoutTransition.CHANGE_APPEARING - ビューが表示に設定されている場合、グループ内の他のビューをアニメーション化します。LayoutTransition.DISAPPEARING - 消えたビューをアニメーション化します。LayoutTransition.CHANGE_DISAPPEARING - ビューが非表示に設定されている場合、グループ内の他のビューをアニメーション化します。

これは、アニメーションを設定するコードです

    transition.setAnimator(LayoutTransition.APPEARING, changeOut2);
    transition.setAnimator(LayoutTransition.CHANGE_APPEARING, changeOut2);
    transition.setAnimator(LayoutTransition.DISAPPEARING, changeOut1);
    transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING, changeOut1);

私の問題は、変更フラグがアニメーションを実行していないことですが、他のフラグは正常に機能しています。

編集:リスナーを追加

レイアウト: LayoutTransition が設定された同じ線形レイアウトにすべて 3 つの cardviews があります。2 つは消えており、ビューに残っている 3 番目の cardview に対して change_disappearing を実行する必要があります。

次のようにリスナーを追加しました。

transition.addTransitionListener(new LayoutTransition.TransitionListener(){

        @Override
        public void startTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) {
            switch(transitionType){
                case LayoutTransition.APPEARING:
                    Log.i("anim", "APPEARING: "+view.toString());
                    break;
                case LayoutTransition.DISAPPEARING:
                    Log.i("anim", "DISAPPEARING: "+view.toString());
                    break;
                case LayoutTransition.CHANGE_APPEARING:
                    Log.i("anim", "CHANGE_APPEARING: "+view.toString());
                    break;
                case LayoutTransition.CHANGE_DISAPPEARING:
                    Log.i("anim", "CHANGE_DISAPPEARING: "+view.toString());
                    break;
            }
        }

        @Override
        public void endTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) {

        }
    });

APPEARING と DISAPPEARING の正しいログを取得していますが、CHANGE フラグのいずれからもログは取得していませんが、親の変更ログを最初に取得したため、次のように設定しました。

        transition.setAnimateParentHierarchy(false);

ログは現在次のようになっています。

11-20 16:04:05.195  13612-13612//*PACKAGE*/ I/anim﹕ APPEARING: android.support.v7.widget.CardView{4289d238 V.E...C. ......ID 0,0-1080,512 #7f080057 app:id/home_card}
11-20 16:04:05.195  13612-13612//*PACKAGE*/ I/anim﹕ APPEARING: android.support.v7.widget.CardView{428a3e80 V.E...C. ......ID 0,512-1080,1024 #7f080059 app:id/home_card1}
4

0 に答える 0