美文网首页
ViewGroup 事件分发

ViewGroup 事件分发

作者: ivolianer | 来源:发表于2016-04-14 21:20 被阅读69次

    单纯的知识是无力的,需要灵活运用,转化为实际的开发经验。

    ViewGroup 的事件分发非常复杂的,这里略过了多点触控的部分。

    详细的可以看:

    http://wangkuiwu.github.io/2015/01/04/TouchEvent-ViewGroup/

    第一,重置状态。

    接收 DOWN 事件时,如果 TouchTarget 不为 null,则向 TouchTarget 发送 CANCEL 事件,并则将其重置为 null。

    一般来说,接收到新的 DOWN 事件时, TouchTarget 应该已经被重置为 null 了。

    但不排除父视图拦截了 UP 事件的可能性(或其他情况)。

    重置状态是为确保上一次 touch gesture 不会影响到接下来的一系列操作。

    第二 ,拦截判断

    如果没有子视图消费 DOWN 事件(即 TouchTarget 为 null,无论是被父视图拦截了,还是没可以消费该事件的子视图,又或者明明接收了事件并做出相应的处理,最终却返回个 false),那么后续事件会被分发给父视图。

    如果 TouchTarget 不为 null,后续事件会被分发给 TouchTarget 处理,事件相对坐标可能有所变化。

    第三,别记结论。

    以上只是使用 ViewGroup 默认 dispatchTouchEvent 的结论。

    如果重载了 dispatchTouchEvent 或其内部调用的其他函数,需要重新分析。 

    相关文章

      网友评论

          本文标题:ViewGroup 事件分发

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