Android 在Animator.AnimatorListener中设计onAnimationCancel()的原因是什么?
Android SDK显示:Android 在Animator.AnimatorListener中设计onAnimationCancel()的原因是什么?,android,animation,Android,Animation,Android SDK显示: public void cancel() 取消动画。与end()不同,cancel() 使动画在其轨迹中停止,发送 onAnimationCancel(Animator)发送给它的侦听器,后跟 onAnimationEnd(动画师)消息。 仅在动画未取消时调用某些方法。 以下是AOSP桌面时钟的一个示例: rotateAnimatorY.addListener(new AnimatorListenerAdapter() { private boolean m
public void cancel()
取消动画。与end()
不同,cancel()
使动画在其轨迹中停止,发送
onAnimationCancel(Animator)
发送给它的侦听器,后跟
onAnimationEnd(动画师)
消息。
仅在动画未取消时调用某些方法。
以下是AOSP桌面时钟的一个示例:
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);
}
});
onAnimationCancel()仅设置一个误判标志,所有工作都在onAnimationEnd()中完成。
结合结束状态和取消状态,在所有情况下最多需要完成3种工作:
a), cancel & end. These work can live in **onAnimationEnd()**
b), cancel &!end. These live in **onAnimationCancel()**
c), !cancel & end. These are annoying.
对于c),必须包含一个类似miscenced的标志
我在AOSP应用程序中搜索,但没有发现单独使用onAnimationCancel()方法的任何好处。它们中的大多数只是“不做任何事情”或复制onAnimationEnd()代码
为什么不将取消标志合并到OnAnimationEnd中呢
抽象void onAnimationEnd(Animator动画,已取消布尔值)
IMOP,它更优雅,重量更轻
在
Animator.AnimatorListener
中设计一个onAnimationCancel()
的原因是什么?@Luksprog我建议重新设计我发布的onAnimationEnd()。对不起,我没有很好地阅读这个问题。我的假设是,他们想明确区分这两个事件。