2

嗨,我正在尝试制作一系列动画,但失败得很惨。它在 4.0 时运行良好,但我使用 Nineoldandroid 添加了对 2.2 和 2.3 的支持。它可以正常工作,但是AnimatorListener's 方法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 上。

4

1 回答 1

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();
于 2014-07-04T11:03:29.110 回答