美文网首页Android自定义View
dispatchTouchEvent事件分发浅析(三)点击执行顺

dispatchTouchEvent事件分发浅析(三)点击执行顺

作者: dodo_lihao | 来源:发表于2016-08-23 16:28 被阅读476次

    上一篇,我们大体理解了分发的过程
    理解了在 dispatchTouchEvent 和 onTouchEvent 的过程中 对应的顺序
    还有 View 和 ViewGroup 的区别

    具体代码可以见https://github.com/2954722256/demo_event


    这里 我们给上一篇的2个例子,
    只是在MainActivity中,
    分别给2个控件, 添加上OnClick 和 OnTouch 事件

    【EventButton】


    Paste_Image.png

    点击 自定义的EventButton
    可以发现对应的过程

    MainActivity    ----    dispatchTouchEvent  ---->   ACTION_DOWN ---->   noMsg
    EventButton ----    dispatchTouchEvent  ---->   ACTION_DOWN ---->   noMsg
    MainActivity    ----    btn setOnTouchListener  onTouch ---->   ACTION_DOWN ---->   noMsg
    EventButton ----    onTouchEvent    ---->   ACTION_DOWN ---->   noMsg
    MainActivity    ----    btn setOnClickListener  onClick ---->   nullEvent   ---->   noMsg
    

    我们可以发现,和前面一样
    从MainActivity分发下来事件
    只是 先触发 OnTouch 的事件(对外的,对开发者的), 再 获取到OnTouchEvent事件(系统的,消费) , 再触发 OnClick 事件

    我们可以理解成, 点击事件从最外层分发下来, 先触发 TouchListener回调接口, 系统获得处理OnTouch事件, 判断是否消费, 判断是Click事件, 再触发 ClickListener回调接口


    【EventViewGroup】:

    Paste_Image.png

    点击 自定义ViewGroup的 EventViewGroup 后
    可以发现

    MainActivity    ----    dispatchTouchEvent  ---->   ACTION_DOWN ---->   noMsg
    EventViewGroup  ----    dispatchTouchEvent  ---->   ACTION_DOWN ---->   noMsg
    MainActivity    ----    LL setOnTouchListener  onTouch  ---->   ACTION_DOWN ---->   noMsg
    EventViewGroup  ----    onTouchEvent    ---->   ACTION_DOWN ---->   noMsg
    MainActivity    ----    LL setOnClickListener  onClick  ---->   nullEvent   ---->   noMsg
    

    我们可以发现,和前面Button一样
    先触发 OnTouch 的事件(对外的,对开发者的), 再 获取到OnTouchEvent事件(系统的,消费) , 再触发 OnClick 事件

    只是, ViewGroup没有调用最外面Activity的OnTouchEvent方法了
    ** 可以理解成,这里消费掉了点击, 就不用调用上层的 OnTouch方法了 **


    简单回顾

    简单看了下对应的点击后的区别
    我们简单对比一下

    Paste_Image.png

    下一篇我们可以了解dispatchTouchEvent事件分发浅析(四)Intercept拦截

    相关文章

      网友评论

        本文标题:dispatchTouchEvent事件分发浅析(三)点击执行顺

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