一 触摸事件涉及的类:
触摸事件涉及到的两个重要主角就是 和 ,其中 继承自
。
所有的界面控件都是最终继承自 或者 。
二 触摸事件涉及的方法说明:
涉 及 的 方 法 :
、、、
、。
作用分别是:
事件分发
事件拦截
事件处理。
点击事件
长按事件
触摸事件监听
类里有两个方法 ,。
类里新增了 方法。
由于 触摸事件可以分发给子 处理,如果不想让子 处理就可以拦截
事件处理,但是 没有子 ,所以处理事件时不需要做拦截处理,所以就没有
接口。
它们之间的调用关系如何将在如下的源码分析中充分说明
三 触摸事件源码分析说明:
一个 事件最先到达的是根节点,即 的 时,它会依次下发,所
以我们需要从第一个收到触摸事件的控件 来跟踪触摸事件的分发处理流程。
对于上层应用来说触摸事件第一入口是 的 :
public boolean dispatchTouchEvent(MotionEvent ev) {
/**
* 对 mFirstTouchTarget 解释:是第一个找到的接收处理触摸事件的子
view, down 的时候如果子 view 的 dispatchTouchEvent 返回 true(一般子 view 不复
写此方法,所以只要注册的 onTouchLister 接口或 onTouchEvent 方法返回 true
)mFirstTouchTarget 就不是 null。
* 如果子 view 的 down 事件返回 false 那么 mFirstTouchTarget 就是
null,之后
*move、 up 事件就不给子 view 了
**/
if (actionMasked == MotionEvent.ACTION_DOWN|| mFirstTouchTarget
!= null){
if (!disallowIntercept) {