点击事件的传递规则
点击事件的分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生了以后,系统需要把这个事件传递给一个具体的View,这个传递过程就是分发。
三个重要的方法:
public boolean dispatchTouchEvent(MotionEvent ev)
进行事件的分发
public boolean onInterceptTouchEvent(MotionEvent ev)
用来判断是否拦截某个事件
public boolean onTounchEvent(MotionEvent ev)
用来处理点击事件
上述三个方法的关系可用如下伪码表示
public boolean dispatchTouchEvent(MotionEvent e){
boolean result=false;
if(onInterceptTouchEvent(e)){
//如果当前View截获事件,那么事件就会由当前View处理,即调用onTouchEvent()
result=onTouchEvent(e);
}else{
//如果不截获那么交给其子View来分发
result=child.dispatchTouchEvent(e);
}
return result;
}
http://blog.csdn.net/lmj623565791/article/details/38960443中的例子可以很好的看到传递过程