8

当我完成我的活动时,我应该使用clearAnimation()stop()放在任何剩余的AnimationDrawable物体上吗?

4

1 回答 1

4

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);
    }
}
于 2019-01-31T11:41:27.043 回答