[Andorid] LottieでcancelAnimationしているのにアニメーションがStopしない

先日、もりもりアニメーションを動かしてくれるライブラリLottieを組み込んでみてそこそこ触ってみたんだけど、地味なバグ?に引っかかって時間を取られた話。

スポンサーリンク

現象

タイトル通りなんだけど、アニメーションをキャンセルしているのにも関わらずアニメーションが止まってくれないっていう現象にぶち当たった。

その時書いてたコードがこちら。

loadingView.visibility = View.INVISIBLE
loadingView.cancelAnimation()

単純にViewを非表示にしてアニメーションをキャンセルしている。

この状態でView.VISIBLEに戻すとアニメーションがもりもり動いている。動いている、、、。

cancelAnimation()をしているのにも関わらず動いている、、、。

ちなみに自分が予期しないタイミングでplayAnimation()をしちゃってるのかな?って疑って実装見直してみてもplayAnimation() は行っていない。

超謎だった。

対応

すごい単純な対応で現象が改修されたんだけど、個人的には腑に落ちていない・・・。

直したコードがこちら。

loadingView.cancelAnimation()
loadingView.visibility = View.INVISIBLE

単純にキャンセルと非表示の順序を変えただけ。

何故かこれだけで直った。

Lottieのコード少し見てみたんだけど、Viewの表示状態なんて見てなさそうな雰囲気がしたからとっても謎。

Lottieのドキュメントとかに書いてあるのかな?探してないけど。

個人的にはLottieのバグなんじゃないの?って疑っている。

まぁ、こんな単純な修正で直ったから良しとしよう。

キャンセルと非表示の順番は気をつけましょうねってことですね。

タイトルとURLをコピーしました