在Animator.AnimatorListener中设计onAnimationCancel()的原因是什么?

Fel*_*x.D 15 animation android

Android SDK Animator显示:

public void cancel()

取消动画.与end()不同,cancel()会使动画在其轨道中停止,向其侦听器发送onAnimationCancel(Animator),然后发送onAnimationEnd(Animator)消息.

仅在动画未取消时调用某些方法.以下是AOSP的DeskClock的样本:

rotateAnimatorY.addListener(new AnimatorListenerAdapter() {
    private boolean mIsCanceled = false;

    @Override
    public void onAnimationCancel(Animator animation) {
        mIsCanceled = true;
    }

    @Override
    public void onAnimationEnd(Animator animation) {
        if (!mIsCanceled) {
            view.setRotation(0);
        }

        view.setLayerType(View.LAYER_TYPE_NONE, null);
    }
});
Run Code Online (Sandbox Code Playgroud)

onAnimationCancel()只设置一个mIsCanceled标志,所有工作都在onAnimationEnd()中完成.结合END状态和CANCEL状态,在所有情况下最多需要完成3种类型的工作:

a), cancel & end. These work can live in **onAnimationEnd()**    
b), cancel &!end. These live in **onAnimationCancel()**    
c), !cancel & end. These are annoying.
Run Code Online (Sandbox Code Playgroud)

对于c),你必须涉及像mIsCanceled这样的旗帜.

我搜索AOSP应用程序,并没有找到任何有关onAnimationCancel()的单独方法的好处.他们中的大多数只是"什么都不做"或复制onAnimationEnd()代码.

为什么不将取消标志合并到onAnimaitonEnd:

abstract void   onAnimationEnd(Animator animation, boolean canceled)
Run Code Online (Sandbox Code Playgroud)

IMOP,它更优雅,重量更轻.

在Animator.AnimatorListener中设计onAnimationCancel()的原因是什么?