首页 > 移动平台 > 详细

android 触摸touch事件的派送和传递

时间:2014-11-14 18:01:28      阅读:367      评论:0      收藏:0      [点我收藏+]

  1、touch事件从Activity开始向下逐层派发

     一直派发到焦点控件进行处理

  2、如果控件的事件处理方法返回true

     则,该控件消费且持续关注此事件

     否则,该事件向该控件的上一层容器传递

  3、控件的touch监听器的onTouch方法 先于

     控件本身的onTouchEvent执行


Touch事件派发和处理的方法

  dispatchTouchEvent

  onInterceptTouchEvent(只有ViewGroup有该拦截方法)

  onTouchListener.onTouch

  onTouchEvent


假设一个Activity只包含一个Linearlayout,这个LinearLayout又包含一个TextView。从Log中可以看出

当用户按下这个TextView时,所执行的函数顺序是:

Activity.dispatchTouchEvent

Linearlayout.dispatchTouchEvent

LinearLayout.onInterceptTouchEvent(LinearLayout是ViewGroup)

TextView.dispatchTouchEvent

TextView.onTouchListener.onTouch

TextView.onTouchEvent

LinearLayout.onTouchListener.onTouch

LinearLayout.onTouchEvent

最后是Activity.onTouchEvent

以上是每一层都不消费这个touch事件的情况,即所有方法都return false的情况。

如果任意一个方法消费了这个事件,即返回了true,这种情况下事件只到此方法为止,后面的方法都不执行。而后续事件将也只执行到此方法,即此方法消费并持续关注此事件,如:移动和抬起等后续事件。


 

android 触摸touch事件的派送和传递

原文:http://lyman.blog.51cto.com/3258049/1576555

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!