示例#1
0
  private void update() {
    long curTime = SystemClock.uptimeMillis();
    float progress = Math.min(1f, (float) (curTime - mStartTime) / mAnimDuration);
    float value = mInterpolator.getInterpolation(progress);

    mThumbPosition =
        mChecked ? (mStartPosition * (1 - value) + value) : (mStartPosition * (1 - value));

    if (progress == 1f) stopAnimation();

    if (mRunning) {
      if (getHandler() != null)
        getHandler().postAtTime(mUpdater, SystemClock.uptimeMillis() + ViewUtil.FRAME_DURATION);
      else stopAnimation();
    }

    invalidate();
  }