Android 自定义视图删除所有postInvalidate()

Android 自定义视图删除所有postInvalidate(),android,android-animation,android-custom-view,Android,Android Animation,Android Custom View,如前所述: 删除onDetachedFromWindow中所有已发布的可运行项 我有一个自定义视图,CircleCheckBox。单击后,将执行动画 动画由视图#postInvalidate()实现 那么,有没有办法删除onDetachedFromWindow()中发布的任何可运行文件 编辑 让我告诉你CircleCheckBox是如何工作的 第一步 在CircleCheckBoxconstructor中,我为它设置了View\OnClickListener: this.setOnClickL

如前所述:

删除onDetachedFromWindow中所有已发布的可运行项

我有一个自定义视图,
CircleCheckBox
。单击后,将执行动画

动画由
视图#postInvalidate()
实现

那么,有没有办法删除
onDetachedFromWindow()中发布的任何可运行文件

编辑 让我告诉你
CircleCheckBox
是如何工作的

第一步 在
CircleCheckBox
constructor中,我为它设置了
View\OnClickListener

this.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        toggle();
        if (mListener != null) {
            mListener.onCheckedChanged(isChecked());
        }
    }
});
步骤2 在方法
toggle()
中,它将调用:

@Override
public void setChecked(boolean checked) {
    ....
    if (checked) {
        startCheckedAnimation();
    } else {
        startUnCheckedAnimation();
    }
}
步骤3 让我们说
开始checkedanimation()


我使用
postInvalidate()
方法让视图调用
onDraw()

我认为您可以使用该方法

空虚

删除消息队列中Runnable r的所有挂起帖子。

将取消应用于
视图的所有动画

在您的情况下,您使用的是
ValueAnimator
,这意味着您必须保留对它的引用,并且在需要取消动画时,您应该执行以下操作:

然后,需要取消动画时:



circleAnimator.cancel();


但是如何获取
r
?感谢您的回答,但是自定义视图没有
Animation mCurrentAnimation
。我将更新我的问题。是的,查看您如何运行此Animation.Thx会很有帮助。您的回答既有用又合理。


private ValueAnimator circleAnimator;

...

circleAnimator = ValueAnimator.ofFloat(0f, 1f);
// setup and start `ValueAnimator`



circleAnimator.cancel();