重复AnimatorSet

soc*_*qwe 15 animation android

有没有一种简单的方法来重复Android AnimatorSet(无限)?我可以通过再次呼叫设置AnimationListener并重启吗?AnimatorSetstart()

AnimatorSet包含两个按顺序播放的动画.因此,如果我将单个动画的重复模式设置为重复,那么第一个将在第二个运行时重复,对吗?

wkh*_*tch 28

设置它的子对象动画师的重复模式和计数;

objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);
objectAnimator.setRepeatMode(ObjectAnimator.RESTART/REVERSE...);
Run Code Online (Sandbox Code Playgroud)

但是,由于还有另一个错误,这将无法停止或取消.

很明显,我并不喜欢你可以在Android中制作动画的各种方式,并让它们以某种方式让你失败.希望这有助于其他人.


dau*_*aus 17

前两个问题有答案

有没有一种简单的方法来重复Android AnimatorSet(无限)?我可以通过再次调用start()来设置AnimationListener并重新启动animatorSet吗?

就在这里:

mAnimationSet.addListener(new AnimatorListenerAdapter() {

  private boolean mCanceled;

  @Override
  public void onAnimationStart(Animator animation) {
    mCanceled = false;
  }

  @Override
  public void onAnimationCancel(Animator animation) {
    mCanceled = true;
  }

  @Override
  public void onAnimationEnd(Animator animation) {
    if (!mCanceled) {
      animation.start();
    }
  }

});
mAnimationSet.start();
Run Code Online (Sandbox Code Playgroud)

第三个问题的答案是否定的.将重复第一个动画,并且在所有重复之后将启动后续动画.

  • AnimatorSet和AnimationSet是不同的. (3认同)

Mar*_*ski 0

在我的脑海中 - 动画框架是痛苦的根源,特别是如果你想支持 2.x。我通常在尝试做任何更复杂的事情时遇到问题,跟踪AnimationListener某种“玩家”。我跟踪我播放的动画(例如int等),然后onAnimationEnd开始另一个应该按顺序播放的动画。这样我就可以轻松地“编写”我的序列,而不必担心损坏的框架。