图解Android事件传递之ViewGroup篇

简介: 本篇文章主要讲述ViewGroup中关于触摸事件传递的相关逻辑。主要梳理一下dispatchTouchEvent函数。一些知识点FLAG_DISALLOW_INTERCEPT,可以使用requestDisallowInterceptTouchEvent来设置ViewGroup的这个标记位,让ViewGroup不拦截事件。

本篇文章主要讲述ViewGroup中关于触摸事件传递的相关逻辑。主要梳理一下dispatchTouchEvent函数。

一些知识点

  • FLAG_DISALLOW_INTERCEPT,可以使用requestDisallowInterceptTouchEvent来设置ViewGroup的这个标记位,让ViewGroup不拦截事件。
  • ViewGroup只会将触摸事件转发给那些可见并且触摸事件发生在其可视范围内的子View
  • 如果一个子View没有接收ACTION_DOWN事件,那么这个事件系列的ACTION_MOVE或者ACTION_UP事件根本不会传递给它
  • 关于ViewGroup拦截与否消费与否的判断,只要记住一点就可以轻易判断:1 ViewGroup是否最终没有消费触摸事件(无论是自己自己消费,还是分发给子view消费),决定之后的触摸事件是否会再转发给它。
dispatchTouchEvent的主流程

dispatchTouchEvent中遍历child分发事件的逻辑
转换触摸事件并分发的过程-dispatchTransformedTouchEvent

更详细的源代码请查看我的github

相关文章
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
1409 4
|
Android开发 容器
Android UI设计: 什么是View和ViewGroup?
Android UI设计: 什么是View和ViewGroup?
595 0
|
Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
Android面试高频知识点(1) 图解 Android 事件分发机制
204 1
|
Android开发
Android 事件分发机制详细解读
Android 事件分发机制详细解读
261 5
|
XML 前端开发 Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
Android开发 容器
Android经典实战之如何获取View和ViewGroup的中心点
本文介绍了在Android中如何获取`View`和`ViewGroup`的中心点坐标,包括计算相对坐标和屏幕上的绝对坐标,并提供了示例代码。特别注意在视图未完成测量时可能出现的宽高为0的问题及解决方案。
281 8
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。
567 9
|
图形学 Android开发
小功能⭐️Unity调用Android常用事件
小功能⭐️Unity调用Android常用事件
|
开发工具 Android开发
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
159 0

热门文章

最新文章