3

1 つのコンテナで 2 つのコンポーネントを切り替えているときに、新しいプロパティ アニメーションを使用してレイアウト アニメーションを再生しようとしています。

私は単にこのコードを呼び出します:

            public void onClick(View v) {

            if (componentOneVisible) {
                componentOne.setVisibility(View.GONE);
                componentTwo.setVisibility(View.VISIBLE);
            } else {

                componentTwo.setVisibility(View.GONE);
                componentOne.setVisibility(View.VISIBLE);
            }

            componentOneVisible = !componentOneVisible;
        }

私のアニメーションは次のように設定されています:

    final ObjectAnimator testIn = ObjectAnimator.ofPropertyValuesHolder(
            componentContainer,
            PropertyValuesHolder.ofFloat("scaleX", 0, 1f),
            PropertyValuesHolder.ofFloat("scaleY", 0, 1f),
            PropertyValuesHolder.ofFloat("alpha", 0f, 1f));

    testIn.addListener(new AnimatorListenerAdapter() {
        public void onAnimationEnd(Animator anim) {
            View view = (View) ((ObjectAnimator) anim).getTarget();
            view.setScaleX(1f);
            view.setScaleY(1f);
            view.setAlpha(1f);
        }
    });

    testIn.setDuration(3000);


    final ObjectAnimator testOut = ObjectAnimator.ofPropertyValuesHolder(
            componentContainer,
            PropertyValuesHolder.ofFloat("scaleX", 1f, 0),
            PropertyValuesHolder.ofFloat("scaleY", 1f, 0),
            PropertyValuesHolder.ofFloat("alpha", 1, 0f));


    testOut.setDuration(3000);

    testOut.addListener(new AnimatorListenerAdapter() {
        public void onAnimationEnd(Animator anim) {
            View view = (View) ((ObjectAnimator) anim).getTarget();
            view.setScaleX(0f);
            view.setScaleY(0f);
            view.setAlpha(0f);
        }
    });




    mTransitioner.setAnimator(LayoutTransition.APPEARING, testIn);
    mTransitioner.setAnimator(LayoutTransition.DISAPPEARING, testOut);

    mTransitioner.setDuration(5000);

    mTransitioner.setDuration(LayoutTransition.APPEARING, 3000);
    mTransitioner.setDuration(LayoutTransition.DISAPPEARING, 3000);

コンポーネントを切り替えると、なぜか表示されているアニメーションだけが再生されます。私が見たいと思っているのは、最初に消えるアニメーションを見て、次に現れるアニメーションを見ることです.

また、このコードを呼び出してトランジショナーを設定します

mTransitioner = new LayoutTransition();
    componentContainer.setLayoutTransition(mTransitioner);

何か案は?

4

0 に答える 0