Android touch事件分析

从ViewGroup 的 onDispachTouchEvent 开始

viewgroup 收到父层调用过来的 touch event
onDispathTouchEvent 中做处理分发
1. 先使用 ev.getAction() 得到对应的动作 action ,然后根据actionMasked = action & MotionEvent.ACTION_MASK; 得到动作标志

  1. 当 actionMasked 为 ACTION_DOWN按下的时候 (或者会根据是否多点触屏,这次的事件为 多点触屏的其他事件 mFirstTouchTarget == null 来判断),会调用 onInterceptTouchEvent(ev)去算是否 当前这个viewgroup 拦截掉这个事件,把结果暂时用 intercepted 保存起来

  2. 然后检查当前 actionMasked 是否为结束取消事件 ACTION_CANCEL,并用 canceled 保存起来

  3. 然后 如果没有取消而且没有拦截的时候,回去遍历 当前viewGroup的childView。然后通过调用 isTransformedTouchPointInView 检查当前的这个触摸事件的event 坐标是否 落在这个childview上,

  4. 如果遍历到坐标落在childview 上时,会去调用 dispatchTransformedTouchEvent 来处理 这个触摸事件

  5. dispatchTransformedTouchEvent 中会检查childview是否存在dispatchTouchEvent来分发这个事件给childview

  6. dispatchTouchEvent 中会 根据 当前的这个View(现在还是在 Viewgroup中)是否配置有 OnTouchlistenner ,如果没有就会调用 onTouchEvent 方法

  7. 让后再每一层每一层的把结果 返回给父view

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值