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