content: package com.airsaid.pickerviewlibrary.widget.wheelview;
  
  import java.util.TimerTask;
  
  final class SmoothScrollTimerTask extends TimerTask {
  
      int realTotalOffset;
      int realOffset;
      int offset;
      final WheelView loopView;
  
      SmoothScrollTimerTask(WheelView loopview, int offset) {
          this.loopView = loopview;
          this.offset = offset;
          realTotalOffset = Integer.MAX_VALUE;
          realOffset = 0;
      }
  
      @Override
      public final void run() {
          if (realTotalOffset == Integer.MAX_VALUE) {
              realTotalOffset = offset;
          }
          //把要滚动的范围细分成十小份，按是小份单位来重绘
          realOffset = (int) ((float) realTotalOffset * 0.1F);
  
          if (realOffset == 0) {
              if (realTotalOffset < 0) {
                  realOffset = -1;
              } else {
                  realOffset = 1;
              }
          }
  
          if (Math.abs(realTotalOffset) <= 1) {
              loopView.cancelFuture();
              loopView.handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED);
          } else {
              loopView.totalScrollY = loopView.totalScrollY + realOffset;
  
              //这里如果不是循环模式，则点击空白位置需要回滚，不然就会出现选到－1 item的 情况
              if (!loopView.isLoop) {
                  float itemHeight = loopView.itemHeight;
                  float top = (float) (-loopView.initPosition) * itemHeight;
                  float bottom = (float) (loopView.getItemsCount() - 1 - loopView.initPosition) * itemHeight;
                  if (loopView.totalScrollY <= top||loopView.totalScrollY >= bottom) {
                      loopView.totalScrollY = loopView.totalScrollY - realOffset;
                      loopView.cancelFuture();
                      loopView.handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED);
                      return;
                  }
              }
              loopView.handler.sendEmptyMessage(MessageHandler.WHAT_INVALIDATE_LOOP_VIEW);
              realTotalOffset = realTotalOffset - realOffset;
          }
      }
  }
  