点击事件的分发
-
默认的ViewGroup:
public boolean dispatchTouchEvent(MotionEvent ev) {
lisenter.onLog(Tag+"开始事件分发");
return super.dispatchTouchEvent(ev);
}@Override public boolean onInterceptTouchEvent(MotionEvent ev) { //是否拦截 return super.onInterceptTouchEvent(ev); } //是否处理 @Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); }
MotionEvent 封装了点击的信息,包括触摸点坐标,Action等等。
对于view来说没有onInterceptTouchEvent方法。
事件的处理都是在onTouchEvent方法中。返回true表示处理过,false表示为处理。
流程:
ViewGroup首先分发事件:执行dispatchTouchEvent------到onInterceptTouchEvent是否拦截-------不拦截就继续向下传递-----view如果处理了,onTouchEvent返回true,事件结束。--------如果子view依然没有处理------事件向上返回。