事件拦截分两步,内部和外部
抢事件的原则为:
父容器可以抢子view的事件
子view不可以抢父容器的事件
子view一旦拿到了事件--->事件再由谁处理,子view说了算
外部拦截法:
//外部拦截法思想为Down不拦截,Move的时候横向滑动拦截
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
int x = (int)event.getX();
int y = (int)event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mLastX = (int) event.getX();
mLastY = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
int deltax = x - mLastY;
int deltay = y - mLastY;
if (Math.abs(deltax) < Math.abs(deltay) ) {
Log.i("touch","viewGroup return true");
return true;
}
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}