思路分析
1.开始子view需要滑动,所以要获取事件,即此时父view不能拦截事件
2. 后期父view需要滑动,此时父view需要进行拦截,获取事件
将上面的分析转化为伪代码:
//子view
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
//进行反拦截,保证子view获取down事件, 否则后续事件无法获取
parent.requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_MOVE:
if(子view需要滑动){//禁止父view拦截
parent.requestDisallowInterceptTouchEvent(true);
}else {//允许父view拦截事件
parent.requestDisallowInterceptTouchEvent(false);
}
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
return super.dispatchTouchEvent(event);
}
//父view
public boolean onInterceptTouchEvent(Motio