目录

前言
代码展示
public class MySwipeRefreshLayout extends SwipeRefreshLayout {
private float startY;
private float startX;
private boolean mIsVpDragger;
private final int mTouchSlop;
public MySwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
startY = ev.getY();
startX = ev.getX();
mIsVpDragger = false;
break;
case MotionEvent.ACTION_MOVE:
if (mIsVpDragger) {
return false;
}
float endY = ev.getY();
float endX = ev.getX();
float distanceX = Math.abs(endX - startX);
float distanceY = Math.abs(endY - startY);
if (distanceX > mTouchSlop && distanceX > distanceY) {
mIsVpDragger = true;
return false;
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
mIsVpDragger = false;
break;
}
return super.onInterceptTouchEvent(ev);
}
}