美文网首页
Android事件分发机制

Android事件分发机制

作者: Xuhb | 来源:发表于2017-03-01 15:01 被阅读43次
    事件分发.png

    看了网上很多博客,还是无法理解安卓分发机制。所以自己上。
    上图是总的分发流程示意图,下面做一下说明。
    1.ACTION_DOWN事件传递的回路是这样的:
    Activity.dispatchTouchEvent—>ViewGoup.dispatchTouchEvent
    —>ViewGroup.onInterceptTouchEvent—>View.dispatchTouchEvent
    —>View.onTouchEvent—>ViewGroup.onTouchEvent—>Activity.onTouchEvent
    2.在此回路中,任何onTouchEvent返回true,则表示事件消费,之后的路线不再走
    3.如果ViewGroup.onInterceptTouchEvent返回true,表示该ViewGroup需要拦截该事件,事件不会往子View传递。回路变成:Activity.dispatchTouchEvent
    —>ViewGoup.dispatchTouchEvent—>ViewGroup.onInterceptTouchEvent
    —>ViewGroup.onTouchEvent—>Activity.onTouchEvent
    同样,若onTouchEvent返回true,结束该流程
    4.若ViewGroup.onTouchEvent或View.onTouchEvent的ACTION_DOWN没有返回true,则之后ACTION_UP和ACTION_MOVE将不传入。
    5.ViewGroup与View的dispatchTouchEvent方法若返回true,则表示消费,直接终止回路。若返回false,则直接跳到上一级的onTouchEvent,跳过中间回路部分。
    即如果View.dispatchTouchEvent返回false,则回路是Activity.dispatchTouchEvent—>ViewGoup.dispatchTouchEvent
    —>ViewGroup.onInterceptTouchEvent—>View.dispatchTouchEvent
    —>ViewGroup.onTouchEvent—>Activity.onTouchEvent
    如果ViewGroup.dispatchTouchEvent返回false,则回路是Activity.dispatchTouchEvent—>ViewGoup.dispatchTouchEvent
    —>ViewGroup.onInterceptTouchEvent—>View.dispatchTouchEvent
    —>Activity.onTouchEvent

    如果有说的不对,欢迎大神指正

    相关文章

      网友评论

          本文标题:Android事件分发机制

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