StretchViewPager Github(Github上更新了另一种思路,处理边界和样式)
最近公司有一个ViewPager右边界拉拽进入下一个页面,看了下面这些文章
android自定义ViewPager之——水平滑动弹性效果 代码太长,实现比较复杂,无法拓展拉拽刷新
android viewpager 弹性效果的实现 和上一个问题一样
Android自定义ViewPager:水平滑动弹性效果 拖动会闪烁,不支持多点触控,无法拓展拉拽刷新
效果图:详细代码Github上查看,有Demo可直接运行,实现代码200行
一. 左右弹性ViewPager
1.默认的ViewPager边界活动很死板,加上边界弹性感觉高大上一点。此处解决边界滑动的时候移动,释放的时候回弹。
a. 跟随手势滑动,首先获取滑动方向和距离,然后让其动起来。
通过事件分发方法,在ACTION_DOWN中记录按下的位置lastPosition,此处使用activitPointerId是为了支持多点触控;
因为ViewPager里面可以嵌套很多View,如果在onTouchEvent()中获取,有些时候被子View消费是捕捉不到的。
在ACTION_MOVE时候获取最近一次X方向滑动距离distanceX,接着判断是否是边界需要弹性滑动,调用getStretchEnable()方法;
public boolean dispatchTouchEvent(MotionEvent ev) {
int actionId = ev.getAction() & MotionEvent.ACTION_MASK;
switch (actionId){
case MotionEvent.ACTION_DOWN