您的位置:首页 > 移动开发 > Android开发

Android touch事件分析

2016-04-19 23:04 337 查看
从ViewGroup 的 onDispachTouchEvent 开始

viewgroup 收到父层调用过来的 touch event

在 onDispathTouchEvent 中做处理分发

1. 先使用 ev.getAction() 得到对应的动作 action ,然后根据actionMasked = action & MotionEvent.ACTION_MASK; 得到动作标志

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

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

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

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

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

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

让后再每一层每一层的把结果 返回给父view
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: