カスタムビュー内でこのコードを実行するonAnimationStart
とonAnimationEnd
、繰り返し呼び出され続けます。変じゃない?Android プログラマーとして、私はそれらがそれぞれ 1 回だけ呼び出されることを期待していました。
final ViewPropertyAnimator animator = animate().setDuration(1000).alpha(0.0f); animator.setListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { Utils.log("----------------start"); } @Override public void onAnimationEnd(Animator animation) { Utils.log("--------- end"); } }).start();
onAnimationEnd
しかし、私はによって呼び出されたときにリスナーを削除することで問題を解決しようとしましたViewPropertyAnimator
がsetListener(null)
、ドキュメントに書かれているにもかかわらず、うまくいきませんでした:
public ViewPropertyAnimator setListener (Animator.AnimatorListener listener)
Added in API level 12
Sets a listener for events in the underlying Animators that run the property animations.
Parameters
listener The listener to be called with AnimatorListener events. A value of null removes any existing listener.
Returns
This object, allowing calls to methods in this class to be chained.
他の誰かがこの奇妙な問題に遭遇しましたか? 多分それはAndroidのバグですか?