Пример #1
0
  private int nextAnimationIndex(
      AnimationType animationType, boolean isForwardRock, int currentIndex) {
    switch (animationType) {
      case LOOP:
        {
          return nextDisplayableIndex();
        }

      case STOP:
        {
          return nextDisplayableIndex();
        }

      case ROCK:
        {
          if ((isForwardRock && animation.getCurrentIndex() != animation.size())
              || animation.getCurrentIndex() == 0) {
            return nextDisplayableIndex();
          }

          return previousDisplayableIndex();
        }

      default:
        {
          return 0;
        }
    }
  }
Пример #2
0
  public void run() {
    isAnimating = true;
    animation.setAnimating(true);
    shouldLoop = true;

    AnimationPreferences preferences = animation.getPreferences();
    while (shouldLoop) {
      if (Thread.interrupted()) {
        shouldLoop = false;
        break;
      }

      AnimationType animationType = preferences.getType();

      try {
        long delay = preferences.getFrameDelay();
        if (animation.getCurrentIndex() == animation.size() - 1
            || (animationType == AnimationType.ROCK && animation.getCurrentIndex() == 0)) {
          delay = preferences.getLoopDelay();

          if (animationType == AnimationType.STOP || preferences.getFrames() == 1) {
            shouldLoop = false;
            break;
          }
        }

        Thread.sleep(delay);
      } catch (InterruptedException exception) {
        shouldLoop = false;
        break;
      }

      animation.setCurrentIndex(nextAnimationIndex(animationType, isForwardRock));

      if (animation.getCurrentIndex() == animation.size() - 1
          || (animationType == AnimationType.ROCK && animation.getCurrentIndex() == 0)) {
        if (animationType == AnimationType.ROCK) {
          isForwardRock = !isForwardRock;
        } else {
          isForwardRock = true;
        }
      }
    }

    isAnimating = false;
    animation.setAnimating(false);
  }
Пример #3
0
 private int nextAnimationIndex(AnimationType animationType, boolean isForwardRock) {
   return nextAnimationIndex(animationType, isForwardRock, animation.getCurrentIndex());
 }
Пример #4
0
 private int nextIndex() {
   return nextIndex(animation.getCurrentIndex());
 }
Пример #5
0
 private int previousIndex() {
   return previousIndex(animation.getCurrentIndex());
 }