View的Touch事件分发简要流程

相关文件
./frameworks/base/core/java/android/view/View.java
./frameworks/base/core/java/android/view/ViewGroup.java

流程简介:

首先:

  ViewGroup调用dispatchTouchEvent开始分发消息;

其次:

如果是MotionEvent.ACTION_DOWN或存在mFirstTouchTarget,需要判断是否拦截消息onInterceptTouchEvent
1.如果拦截消息:
/有mFirstTouchTarget,改为MotionEvent.ACTION_CANCEL,发送终止消息给child处理

\没有mFirstTouchTarget,调用super.dispatchTouchEvent自己处理(在dispatchTransformedTouchEvent中传空参数),调用onTouchEvent
2.如果没有拦截:
分发给child处理:
/如果child处理了,设置mFirstTouchTarget,自身不再调用onTouchEvent处理

\如果child没有处理,mFirstTouchTarget为空,调用super.dispatchTouchEvent自己处理(在dispatchTransformedTouchEvent中传空参数),调用onTouchEvent

如果既不是MotionEvent.ACTION_DOWN,也不存在mFirstTouchTarget,则直接拦截消息,由分发者自己处理

函数

dispatchTouchEvent : 返回消息是否被处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值