我有以下代码将侦听器设置为视图:
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();
}
这很好,但是当我尝试通过以下代码取消动画时:
mHiew?.ncl_rds_icon?.animation?.cancel()
。
理想情况下应该调用cancel方法,但是我看不到那里的日志输出。
我在这里错过了什么吗?
哦,我开始播放动画,如下所示:
AnimationUtils.rotate(mHiew?.ncl_rds_icon?.animation)