截获listview和refreshlayout的dispatchTouchEvent方法,针对不同滑动通知父容器是否通知子控件获取事件
CusMaterialRefreshLayout
float xDown = -1,yDown=-1;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction())
{
case MotionEvent.ACTION_DOWN:
xDown = ev.getX();
yDown = ev.getY();
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_MOVE:
if(Math.abs(ev.getX()-xDown)<Math.abs(ev.getY()-yDown))
{
getParent().requestDisallowInterceptTouchEvent(true);
}else
{
getParent().requestDisallowInterceptTouchEvent(false);
}
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return super.dispatchTouchEvent(ev);
}