设为首页 加入收藏

TOP

Android View事件传递
2015-08-31 21:23:15 来源: 作者: 【 】 浏览:27
Tags:Android View 事件 传递

这些事件是有触发顺序的,下面举两个栗子:


只有一个手指点击在view范围内,依次触发的事件:手指按下ACTION_DOWN→手指移动ACTION_MOVE→手指抬起ACTION_UP


多个手指点击在view范围内,依次触发的事件:第一根手指按下ACTION_DOWN→随后的手指按下ACTION_POINTER_DOWN→有手指抬起ACTION_POINTER_UP→最后一根手指抬起ACTION_UP。


为了处理这些事件,Android定义了三种方法:


dispatchTouchEvent()函数:负责分发传递事件。


onInterceptTouchEvent()函数:负责拦截事件


onTouchEvent()函数和 OnTouchListener监听:负责消费和处理事件


事件传递流程


当一个事件被触发,事件的传递从Activity.dispatchTouchEvent()开始,一直从最外层的父view开始向里面的子view传递,直到被拦截。在传递过程中,view可以通过onInterceptTouchEvent()函数进行拦截,一旦父view拦截了该事件,则不再向下传递。


如果被触发的事件被传递至最内层的view,一直未被拦截消费,则会反向向外传递,这时候父view可以通过onTouchEvent函数对事件进行消费,直到activity。另外,如果被触发的ACTION_DOWN事件在某一层未被消费,那么接下来的事件是无法被传递进来的。




】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇从Android源码分析View绘制 下一篇7 个去伪存真的 JavaScript 面试题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: