直接上代码:
public class MyViewPager extends ViewPager {
private float mDownX;
private float mDownY;
public int currentPagePosition = 0;
public MyViewPager(Context context) {
super(context);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context);
}
public MyViewPager(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mDownX = ev.getX();
mDownY = ev.getY();
getParent().requestDisallowInterceptTouchEvent(true);//子控件处理触摸事件
break;
case MotionEvent.ACTION_MOVE:
if (Math.abs(ev.getX()-mDownX)>Math.abs(ev.getY()-mDownY)&& currentPagePosition != 0){
getParent().requestDisallowInterceptTouchEvent(true);
}else{
getParent().requestDisallowInterceptTouchEvent(false);
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return super.dispatchTouchEvent(ev);
}
}