В чем разница между clearAnimation () и stop () в Android? - PullRequest
6 голосов
/ 22 февраля 2012

Когда я заканчиваю свою деятельность, я должен использовать clearAnimation() или stop() на любых оставшихся AnimationDrawable объектах?

1 Ответ

1 голос
/ 31 января 2019

stop() останавливает анимацию и все. Поскольку stop () является методом AnimationDrawable.class, вы можете использовать его, когда хотите остановить анимацию AnimationDrawable, но не в любом представлении.

clearAnimation() - это метод View.class. Это остановит анимацию просмотра и дополнительно:

  • Если определено AnimationListener, будет вызван AnimationListener.onAnimationEnd(Animation animation).

  • Если есть Handler, будет определен Handler.postAtFrontOfQueue(Runnable r).

Вот иерархия вызовов: View.clearAnimation() -> Animation.detach() -> Animation.fireAnimationEnd() и метод fireAnimationEnd():

private void fireAnimationEnd() {
    if (mListener != null) {
        if (mListenerHandler == null) mListener.onAnimationEnd(this);
        else mListenerHandler.postAtFrontOfQueue(mOnEnd);
    }
}
...