从手触摸屏幕开始所产生一系列MotionEvent事件,将事件传递到具体的某一个View的过程就叫做事件分发,就是事件层层传递,直到被消费。
事件 | 简介 |
---|---|
ACTION_DOWN | 手指初次接触到屏幕时触发。 |
ACTION_MOVE | 手指在屏幕上滑动时触发,会会多次触发。 |
ACTION_UP | 手指离开屏幕时触发。 |
ACTION_CANCEL | 事件被上层拦截时触发。 |
类型 | 相关方法 | ViewGroup | View |
---|---|---|---|
事件分发 | dispatchTouchEvent | √ | √ |
事件拦截 | onInterceptTouchEvent | √ | X |
事件消费 | onTouchEvent | √ | √ |
public boolean dispatchTouchEvent(MotionEvent ev){
boolean consume;
if(onInterceptTouchEvent(ev)){
consume = onTouchEvent(ev);
}else {
consume = child.dispatchTouchEvent(ev);
}
return consume;
}
看上面代码可知,调用dispatchTouchEvent()方法则说明事件已经交到该View手上了,接来下要么View自己拦截(onInterceptTouchEvent())处理事件,要么传递给子View。
网友评论