nineoldandroid AnimatorListener多次调用

时间:2014-07-04 11:00:58

标签: android nineoldandroids

嗨,我正在尝试做一系列动画,但它失败了。当它只有4.0时工作正常,但我使用nineoldandroid增加了对2.2和2.3的支持。它接合工作,但AnimatorListener的方法onAnimationEnd被调用两次。

这是我用于动画的代码:

animate(horizontalView)
   .translationX(xDelta)
   .setDuration(2000)
   .setListener(new Animator.AnimatorListener() {
      //listener implementation onAnimationEnd
      @Override
      public void onAnimationEnd(Animator animator) {
         animate(droppingView)
              .translationY(yDelta)
              .setDuration(2000)
              .setListener(null)
              .start();
      }
   }).start();

第一个动画两次触发其侦听器,第二个动画触发3次。这只发生在我测试过的2.2和2.3上。

1 个答案:

答案 0 :(得分:2)

您是否尝试删除旧的侦听器

animate(horizontalView)
   .translationX(xDelta)
   .setDuration(2000)
   .setListener(new Animator.AnimatorListener() {
      //listener implementation onAnimationEnd
      @Override
      public void onAnimationEnd(Animator animator) {
         animator.removeListener(this); // << this
         animate(droppingView)
              .translationY(yDelta)
              .setDuration(2000)
              .setListener(null)
              .start();
      }
   }).start();