Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 取消动画“AnimationListener”和#x27;s'onCancel'未被执行_Java_Android_Animation - Fatal编程技术网

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图标的嵌套图像视图