直接上代码:
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);
}
}