专栏首页懒人开发dispatchTouchEvent事件分发浅析(三)点击执行顺序

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

上一篇,我们大体理解了分发的过程 理解了在 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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • dispatchTouchEvent事件分发浅析(六)MOVE/UP

    上一篇,我们大体理解了消费 View和ViewGroup都可以消费, 消费以后 就不会向上回传了

    dodo_lihao
  • dispatchTouchEvent事件分发浅析(五)消费

    上一篇,我们大体理解了Intercept拦截 而之前 也了解了 分发的过程, 和简单点击,分析了执行顺序

    dodo_lihao
  • dispatchTouchEvent事件分发浅析(四)Intercept拦截

    上一篇,我们大体理解了分发的过程,并且简单做了点击,分析了执行顺序 这篇我们来看下 Intercept拦截

    dodo_lihao
  • EasyRTMP推流助力EasyNVR安防摄像机互联网化,实现核心的RTSP流转RTMP/HLS(m3u8)/HTTP-FLV流功能

    今天,我们着重讲解的是视频输出中的RTMP推流功能,这也是我们EasyNVR功能组件中,最为重要的一个组成部分! EasyRTMP是一套封装了基础的RTMP推...

    EasyNVR
  • mysql主从复制中的1032错误

    可以看到是一条更新语句,UPDATE infosys_login. business_login_user_auth_info where XXX ... @1...

    开发架构二三事
  • 数字战“疫” | 宁夏开通线上游VR虚拟平台 微信实现“卧游”

    ? 新型冠状病毒肺炎疫情发生后,宁夏回族自治区文化和旅游厅暂停全区一切文旅活动,所有文化场馆和旅游景区等公共服务场所暂停对外开放。在线下活动全面暂停、有力防控...

    腾讯文旅
  • 谈谈跨界在软件开发中存在的意义

      跨界的本质:是整合、是融合。通过自身资源的某一特性与其它表面上不相干的资源进行随机的搭配应用。可放大相互资源的价值,甚至可以融合一个完整的独立个体面世。

    Zachary_ZF
  • 仓库标准作业流程与WMS系统规划(中)

    “无论B2B退货,还是B2C退货,待商品退货库房以后,均需经过收货、验收以后,上架员根据验收的结论,将合格品上架至合格品区域,不合格品上架至不合格品区域...

    物流IT圈
  • CAPTCHAs验证码被人工智能攻破

    据《科学》(Science)杂志2017年10月报道,一家名为Vicarious的人工智能公司开发的人工智能算法攻破了被人们广泛使用的CAPTCHAs验证码。 ...

    人工智能快报
  • 公司自己做网站和在平台上建立店铺网站有什么区别

    现代企业公司基本上都会建立自己单独域名的网站,也就是独立的公司网站,但仍有公司会在B2B类似的平台上建立店铺类的网站,并且不少的企业主并不清楚公司自己单独做的网...

    天津做网站-美耐思

扫码关注云+社区

领取腾讯云代金券