web-dev-qa-db-ja.com

宝くじのアニメーションがいつ完了するかを知るには?

フラグメントがあります。onCreateViewメソッドを次に示します。

_@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    mView = inflater.inflate(R.layout.fragment_added_to_cart_anim, container, false);
    ButterKnife.bind(this, mView);

    mAddedToCartAnimation.setAnimation("checked_done_.json");
    mAddedToCartAnimation.loop(false);
    mAddedToCartAnimation.playAnimation();

    // Remove fragment when animation is finished.


    return mView;
}
_

lottie アニメーションが終了したら、getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();を使用してフラグメントを削除する必要があります。正しく理解すれば、isAnimating() lottieメソッドがfalseを返すとアニメーションが終了します。私の構成ではアニメーションがループしないため、現在のフラグメントを削除する必要があります。ただし、ifステートメントを使用することはできません。実行されると、アニメーションがまだ進行している可能性があるためです。

宝くじのアニメーションが終了したときにフラグメントを削除する方法が必要ですが、どうすればよいですか?

13
Tom Finet

このコードは私のために働く:

mAddedToCartAnimation.addAnimatorListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {
            Log.e("Animation:","start");
        }

        @Override
        public void onAnimationEnd(Animator animation) {
            Log.e("Animation:","end");
            //Your code for remove the fragment
            try {
                getActivity().getSupportFragmentManager()
                      .beginTransaction().remove(this).commit();
            } catch(Exception ex) {
                ex.toString();
            }
        }

        @Override
        public void onAnimationCancel(Animator animation) {
            Log.e("Animation:","cancel");
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
            Log.e("Animation:","repeat");
        }
    });

これで問題が解決することを願っています:)

26
Chefes