Android 为什么在动画侦听器中调用.cancel()会导致StackOverflower错误?

Android 为什么在动画侦听器中调用.cancel()会导致StackOverflower错误?,android,animation,graphics,Android,Animation,Graphics,是否有某些原因导致我无法调用动画侦听器中提供的Animator。cancel 当我执行以下代码时,我得到一个StackOverflower错误: animation.addListener(new ValueAnimator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { if (!sho

是否有某些原因导致我无法调用动画侦听器中提供的Animator。cancel

当我执行以下代码时,我得到一个StackOverflower错误:

        animation.addListener(new ValueAnimator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animator) {
                if (!showCircles)
                    animator.cancel();
            }
        ....

我认为,即使你取消了动画师,听众仍然在收听活动

我不完全确定这是否有效,但您可以尝试添加:

ifanimator!=空的{ 取消; }

我希望这有帮助


RF

我认为,即使你取消了动画师,听众仍在收听活动

我不完全确定这是否有效,但您可以尝试添加:

ifanimator!=空的{ 取消; }

我希望这有帮助


我发现了一个解决办法

我发现您必须调用animator.removeAllListeners;,在调用animator.cancel;之前;。大多数4.0+设备都是如此,但在GSIII上,由于某些原因,您不需要这样做


由于某种原因,cancel命令导致onAnimationStart再次被触发,并以无限循环结束。

我发现了一个解决方案

我发现您必须调用animator.removeAllListeners;,在调用animator.cancel;之前;。大多数4.0+设备都是如此,但在GSIII上,由于某些原因,您不需要这样做


出于某种原因,cancel命令导致onAnimationStart再次触发,并以无限循环结束。

如果调用动画,会发生什么情况。cancel?动画不能从内部类中调用,除非声明为final。如果调用animation,会发生什么情况。cancel?动画不能从内部类中调用,除非声明为final宣布决赛。对不起,我说得太早了。我仍然看到StackOverflow。我发现了一个解决方案,你的回答让我想到了——我还发现了一条奇怪的皱纹。解决方案发布了。很抱歉,我说得太快了。我仍然看到StackOverflow。我发现了一个解决方案,你的回答让我想到了——我还发现了一条奇怪的皱纹。发布解决方案。我想知道这是否是Android动画框架的错误?!我之所以这么说,是因为我发现Galaxy SIII没有表现出这种行为,但HTC DNA和Moto RAZR HD却表现出了这种行为——所以三星似乎有人纠正了这一点?我觉得没有资格追踪这个问题,但我很想知道是否有人对这个问题有更多的了解。我想知道这是否是Android动画框架的错误?!我之所以这么说,是因为我发现Galaxy SIII没有表现出这种行为,但HTC DNA和Moto RAZR HD却表现出了这种行为——所以三星似乎有人纠正了这一点?我觉得没有资格追查这件事,但我很想知道是否有人对这件事有更多的了解。