Java 取消动画“AnimationListener”和#x27;s'onCancel'未被执行
我有以下代码将侦听器设置为视图:Java 取消动画“AnimationListener”和#x27;s'onCancel'未被执行,java,android,animation,Java,Android,Animation,我有以下代码将侦听器设置为视图: public static void rotate(final View view){ final ObjectAnimator rotation = ObjectAnimator.ofFloat(view, "rotation", -5f, 5f); rotation.setRepeatCount(ObjectAnimator.INFINITE); rotation.setRepeatMode(ObjectAni
public static void rotate(final View view){
final ObjectAnimator rotation = ObjectAnimator.ofFloat(view, "rotation", -5f, 5f);
rotation.setRepeatCount(ObjectAnimator.INFINITE);
rotation.setRepeatMode(ObjectAnimator.REVERSE);
rotation.setDuration(100);
rotation.addListener(new Animator.AnimatorListener(){
int count = 1;
@Override
public void onAnimationStart(Animator animation) {
Logger.d("ANIMATION","S T A R T");
}
@Override
public void onAnimationEnd(Animator animation) {
Logger.d("ANIMATION","E N D");
}
@Override
public void onAnimationCancel(Animator animation) {
Logger.d("ANIMATION","C A N C E L");
rotation.removeAllListeners();
rotation.end();
rotation.cancel();
}
@Override
public void onAnimationRepeat(Animator animation) {
count += 1;
if (count == 5)
{
final ObjectAnimator rotationEnd = ObjectAnimator.ofFloat(view, "rotation", -5f, 0f);
rotationEnd.setDuration(50);
rotationEnd.start();
rotationEnd.setInterpolator(new AccelerateDecelerateInterpolator());
rotation.setStartDelay(1000);
rotation.start();
count = 1;
}
}
});
view.setTag(rotation);
rotation.setInterpolator(new AccelerateDecelerateInterpolator());
rotation.start();
}
这很好,但当我尝试通过以下代码取消动画时:
mView?.ncl\u rds\u icon?.animation?.cancel()
理想情况下,应该调用cancel方法,但我看不到那里的日志输出
我有什么遗漏吗
哦,我开始动画,如下所示:
AnimationUtils.rotate(mView?.ncl\u rds\u icon?.animation)
请说明什么是mView、.ncl\u rds\u icon以及使用的目的是什么?要开始动画?这是一个简单的视图,mView是一个线性布局,带有ID为ncl\u rds\u图标的嵌套图像视图