Beispiel #1
0
  boolean animationFrame(long currentTime) {
    boolean done = false;
    switch (mPlayingState) {
      case RUNNING:
      case SEEKED:
        float fraction = mDuration > 0 ? (float) (currentTime - mStartTime) / mDuration : 1f;
        if (fraction >= 1f) {
          if (mCurrentIteration < mRepeatCount || mRepeatCount == INFINITE) {
            if (mListeners != null) {
              int numListeners = mListeners.size();
              for (AnimatorListener mListener : mListeners) {
                mListener.onAnimationRepeat(this);
              }
            }
            if (mRepeatMode == REVERSE) {
              mPlayingBackwards = !mPlayingBackwards;
            }
            mCurrentIteration += (int) fraction;
            fraction = fraction % 1f;
            mStartTime += mDuration;
          } else {
            done = true;
            fraction = Math.min(fraction, 1.0f);
          }
        }
        if (mPlayingBackwards) {
          fraction = 1f - fraction;
        }
        animateValue(fraction);
        break;
    }

    return done;
  }