布局
事件机制
关于View传递事件的博文很多,看的让人眼花缭乱,最近有点时间,把自己所了解的做一个总结,直接进入主题了。
Android进阶之触摸反馈核心视频
事件的传递主要有三个方法:dispatchTouchEvent(事件分发)、onInterceptTouchEvent(事件拦截)、onTouchEvent(事件消费)。如下图:
| 事件 | Activity | ViewGroup | View |
|---|---|---|---|
| dispatchTouchEvent | 有 | 有 | 有 |
| onInterceptTouchEvent | 没有 | 有 | 没有 |
| onTouchEvent | 有 | 有 | 有 |
从上面的表格我们可以看出只有拦截事件比较特殊,只存在ViewGroup中,也就是我们只能在ViewGroup中才能重写该方法。这三个方法都有返回值,返回值为true的话表示该事件被消费,事件传递终止,反之返回false,事件继续传递。
事件分成好几种类型,我们常用的就三种,从手指按下移动到抬起依次为:ACTION_DOWN(按下)、ACTION_MOVE(移动)、ACTION_UP(抬起)。
下图为事件传递的流程图:

事件传递的流程.png
建议读完以下文章: