难度
中等
效果说明
越界回弹的效果不用多说了吧,大家应该都知道, 不知道的看下方效果图。
效果图

特性说明
- 支持阻尼系数
- 支持多指触控
- 支持上拉回弹、下拉回弹
- 支持设置开启/关闭回弹:ENABLED_ALL、ENABLED_TOP、ENABLED_BOTTOM 、ENABLED_NONE
- 不影响原有手势的分发处理
- 支持设置最大滑动距离
- 支持设置插值器
实现原理
整体采用offsetTopAndBottom()+ValueAnimator实现。
事件分发处理
重写dispatchTouchEvent(MotionEvent ev)方法,在ACTION_DOWN中判断是否可以下拉或者上拉,如果可以,就拦截此次事件
滑动处理
在ACTION_MOVE中,计算每次滑动的差值diffY,然后使用offsetTopAndBottom() 进行滑动
手指抬起处理
在ACTION_UP中,获取已滑动的距离scrollY,然后使用ValueAnimator计算每一帧滑动的距离,最后再次使用offsetTopAndBottom(

本文介绍了如何实现一个自定义的ScrollView,支持越界回弹、多点触控和自定义特性。通过事件分发处理、滑动计算以及手指抬起后的动画效果来达到回弹效果。同时,该ScrollView允许设置阻尼系数、最大滑动距离和插值器,且不影响原生手势处理。

2186

被折叠的 条评论
为什么被折叠?



