几分钟了解Android中View的事件分发机制

点击事件的分发过程由3个很重要的方法来共同完成:

  • 用来进行事件的分发(由接受事件的父View进行分发)
public boolean dispatchTouchEvent(MotionEvent ev);
  • 用来判断是否拦截某个事件
public boolean onInterceptTouchEvent(MotionEvent ev);
  • 用来处理点击事件
public boolean onTouchEvent(MotionEvent ev);

三者关系可以用以下伪代码表示:

public boolean dispatchTouchEvent(MotionEvent ev){
   boolean consume = false;
   if (onInterceptTouchEvent(ev)){    //是否被父View拦截
          consume = onTouchEvent(ev);    //是否被父View消耗
   } else {
          consume = child.dispatchTouchEvent(ev);  //交给子View处理
   }
}

流程图如下:

几分钟了解Android中View的事件分发机制_第1张图片
View的事件分发

你可能感兴趣的:(几分钟了解Android中View的事件分发机制)