Esempio n. 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;
        }
    }
  }
Esempio n. 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);
  }
Esempio n. 3
0
  private int nextIndex(int currentIndex) {
    int nextIndex = currentIndex + 1;
    if (nextIndex > animation.size() - 1) {
      nextIndex = 0;
    }

    return nextIndex;
  }
Esempio n. 4
0
  private int previousIndex(int currentIndex) {
    int previousIndex = currentIndex - 1;
    if (previousIndex < 0) {
      previousIndex = animation.size() - 1;
    }

    if (previousIndex < 0) {
      previousIndex = 0;
    }

    return previousIndex;
  }