フラグメントがあります。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ステートメントを使用することはできません。実行されると、アニメーションがまだ進行している可能性があるためです。
宝くじのアニメーションが終了したときにフラグメントを削除する方法が必要ですが、どうすればよいですか?
このコードは私のために働く:
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");
}
});
これで問題が解決することを願っています:)