'How to know when a Lottie animation is completed?
I have a fragment, here is the onCreateView method:
@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 the animation is finished.
return mView;
}
I need to remove the fragment using getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit(); when the lottie animation has ended. If I understand correctly when the isAnimating() Lottie method returns false the animation has ended and since in my configuration the animation does not loop this is when I should remove the current fragment. But I can't just use an if statement since when it is executed the animation may still be going.
I need a way to remove the fragment when the Lottie animation ends, how do I do this?
Solution 1:[1]
Kotlin Code for animation complete :
successAnimation.addAnimatorListener(object : Animator.AnimatorListener{
override fun onAnimationRepeat(animation: Animator?) {
}
override fun onAnimationEnd(animation: Animator?) {
//Add your code here for animation end
}
override fun onAnimationCancel(animation: Animator?) {
}
override fun onAnimationStart(animation: Animator?) {
}
})
Solution 2:[2]
In Kotlin , you can this way:
val lotWelcome=findViewById<LottieAnimationView>(R.id.lot_1)
lotWelcome.addAnimatorListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator) {
Log.e("Animation:", "start")
}
override fun onAnimationEnd(animation: Animator) {
Log.e("Animation:", "end")
//Ex: here the layout is removed!
firstScreen.visibility= View.GONE
}
override fun onAnimationCancel(animation: Animator) {
Log.e("Animation:", "cancel")
}
override fun onAnimationRepeat(animation: Animator) {
Log.e("Animation:", "repeat")
}
})
By the way , you can see the original document here: https://airbnb.io/lottie/#/android
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Rajeev Shetty |
| Solution 2 | Mori |
