3.1仿薄荷卷次控件之限制HorizontalScroll完成后的距离调整

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

滑动完成过完后要调整偏移量,使偏移量刚好为oneStep的整数倍

滑动完成过完后要调整偏移量,使偏移量刚好为oneStep的整数倍

完整代码

1. 判断Scroll.fling滑动是否完成

方法:在ACTION_UP后,postDelay一个Runnable,在Runnabel中,通过判断scrollx是否在变化,如果scrollX没有变化,就证明已经滑动完成。


...
  case MotionEvent.ACTION_UP:
    ...
    sartAjust();
    ...
...

Runnable adjustRunnable = new Runnable() {
     @Override
     public void run() {
         int scrollX = getScrollX();
         if (currentScrollX == scrollX) {//滑动结束
           调整代码
         } else {//继续检测
             sartAjust();
         }
     }
 };

 private void sartAjust() {
     currentScrollX = getScrollX();
     postDelayed(adjustRunnable, CHECKTIME);
 }

2. 调整偏移距离的计算代码

3.1仿薄荷卷次控件之限制HorizontalScroll完成后的距离调整_第1张图片
image

int more = scrollX % oneStep;//多余距离
int remain=oneStep * (scrollX / Math.abs(scrollX))-more;//剩余距离
if (Math.abs(more) > oneStep / 2) {
 scrollBy(remain, 0);
} else {
  scrollBy(-more, 0);
}
     

你可能感兴趣的:(3.1仿薄荷卷次控件之限制HorizontalScroll完成后的距离调整)