是否有某些原因我无法在动画监听器中提供的Animator上调用.cancel()?
当我执行以下代码时,我得到一个StackOverflowError:
animation.addListener(new ValueAnimator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
if (!showCircles)
animator.cancel();
}
....
答案 0 :(得分:4)
我发现了一个解决方案。
我发现在致电animator.removeAllListeners();
之前,您必须致电animator.cancel();
。 (对于大多数4.0+设备都是如此,但在GSIII上,出于某种原因,你不需要。)
由于某种原因,cancel()
命令导致onAnimationStart
再次被触发(最终以无限循环结束)。
答案 1 :(得分:1)
我认为即使你取消了动画师,听众仍然在听这个事件。
我不完全确定这是否有效,但您可以尝试添加:
if(animator!= null){ animator.cancel(); }
我希望这会有所帮助
RF