SmartRefreshLayout 请问如何设置淘宝二楼上滑返回一楼的阻尼效果

s71maibg  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(26)

没有找到这个方法,看源码中好像也没有设置,自己继承重写了 moveSpinnerInfinitely 方法,如下:

@Override
 protected void moveSpinnerInfinitely(float spinner) {
  
      if (mState == RefreshState.TwoLevel && spinner > 0) {
          // 上拉距离
          float pullUpDistance = getMeasuredHeight() - spinner;
          // 设置阻尼效果
          float newSpinner = spinner + pullUpDistance * mDragRate;
          mKernel.moveSpinner(Math.min((int) newSpinner, getMeasuredHeight()), true);
      } else {
          super.moveSpinnerInfinitely(spinner);
      }
  }

但是发现产生了其他的问题,在多指连续触摸上滑的时候,上面方法回调的 spinner 会在屏幕中间的时候为 0,从而导致淘宝二楼返回一楼的时候,卡在中间。

9njqaruj

9njqaruj1#

找到原因了,因为 mDragRate 设置的 0.5,因为阻尼效果,在滑动到屏幕一半的时候,就滑不动了。阻尼效果写的有问题。

5kgi1eie

5kgi1eie2#

看了作者写的阻尼效果,有一个公式:y = M(1-100^(-x/H))
请问 M、H、x 代表什么意思呢?

相关问题