1.仿薄荷卷次控件之水平滑动控件HorizontalScroll

本篇文章属于android仿薄荷卷尺系列文章

  1. 代码地址
    HorizontalScroll
  2. HorizontalScroll控件作用
    一个经典的根据根据手势滑动和通过scrollBy/to 来实现滑动的控件。
  3. Scroller.fling
  • 为了实现惯性滑动,使用到了Scroller.fling。
    public void fling(int startX, int startY, int velocityX, int velocityY,
            int minX, int maxX, int minY, int maxY) ;
  • Scroll.fling要结合computeScroll使用

......

case MotionEvent.ACTION_UP:
          mVelocityTracker.computeCurrentVelocity(1000);
              float xvel=mVelocityTracker.getXVelocity(mPointActivtyId);
              if(Math.abs(xvel)>ViewConfiguration.get(getContext()).getScaledMinimumFlingVelocity()) {
                  mFlingScroller.fling(
                          getScrollX(), getScrollY(),
                          -(int) xvel, 0,//数据设为计算出的速度的相反值
                          Integer.MIN_VALUE, Integer.MAX_VALUE,
                          0, 0);
              }

              break;
......

  @Override
  public void computeScroll() {
      super.computeScroll();
      if (mFlingScroller.computeScrollOffset()) {
          int currX = mFlingScroller.getCurrX();
          scrollTo(currX, mFlingScroller.getCurrY());
          invalidate();//通知视图重绘
      }
  }

4.注意点
computeScroll()函数中要主动调动 invalidate()通知视图重绘

你可能感兴趣的:(1.仿薄荷卷次控件之水平滑动控件HorizontalScroll)