美文网首页
事件分发机制

事件分发机制

作者: MC_Honva | 来源:发表于2017-01-12 10:09 被阅读37次

View和ViewGroup关系

Activity、viewgroup、view事件分发机制顺序三者关系

整个事件流向是一个类U型图

注:

  • 仔细看的话,图分为3层,从上往下依次是Activity、ViewGroup、View事件从左上角那个白色箭头开始,由Activity的dispatchTouchEvent做分发箭头的上面字代表方法返回值,return true、return false、return super.xxxxx(),super的意思是调用父类实现。
  • dispatchTouchEvent和onTouchEvent的框里有个【true---->消费】的字,表示的意思是如果方法返回true,那么代表事件就此消费,不会继续往别的地方传了,事件终止。
    目前所有的图的事件是针对ACTION_DOWN的
  • 只有return super.dispatchTouchEvent(ev) 才是往下走,返回true 或者 false事件就被消费了(终止传递)。

对于ACTION_MOVE和ACTION_UP

  • 如果在某个控件的dispatchTouchEvent 返回true消费终结事件,那么收到ACTION_DOWN 的函数也能收到 ACTION_MOVE和ACTION_UP。



小结

  • Android中事件传递按照从上到下进行层级传递,事件处理从Activity开始到ViewGroup再到View。
  • 事件传递方法包括dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent,其中前两个是View和ViewGroup都有的,最后一个是只有ViewGroup才有的方法。这三个方法的作用分别是负责事件分发、事件处理、事件拦截。
  • onTouch事件要先于onClick事件执行,onTouch在事件分发方法dispatchTouchEvent中调用,而onClick在事件处理方法onTouchEvent中被调用,onTouchEvent要后于dispatchTouchEvent方法的调用。

如有不妥之处,请指点

参考地址

Android事件传递机制--Ryan's Zone

View 的事件分发机制(Android 开发艺术探索读书笔记)

图解 Android 事件分发机制-文/Kelin(简书作者)

2016年12月28日10:23:17

相关文章

网友评论

      本文标题:事件分发机制

      本文链接:https://www.haomeiwen.com/subject/tqsdbttx.html