コード例 #1
0
  private int nextDisplayableIndex() {
    AnimationType animationType = animation.getPreferences().getType();
    int nextIndex = nextIndex();

    // Skip images set to not display
    for (@SuppressWarnings("unused") int index = 0;
        !animation.getRadarGroups().get(nextIndex).shouldDisplay();
        nextIndex = nextAnimationIndex(animationType, isForwardRock, nextIndex)) ;

    return nextIndex;
  }
コード例 #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);
  }