取消动画`AnimationListener`的`onCancel`不会执行

时间:2018-08-06 12:34:31

标签: 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(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)

0 个答案:

没有答案