当前位置: 首页 > news >正文

NestedScrollView实现嵌套滑动机制

一、Android事件分发

Android的事件从Activity开始,向顶层view进行分发,顶层view再向次级view,即它的子view进行分发,依次类推,直到找到第一个可以处理此事件的view,事件分发成功。如果,最终都没能找到合适的View,则此事件序列自动消失的。

事件派发完后进行事件的消费,如果view不处理该事件,则在onTouchEvent方法里,针对donw事件返回false,表示不消费事件。事件交还给它的父view处理,依次类推,如果都不消费,事件返回给Activity,此事件消失。事件的消费是从子view到父view再到activity。

二、NestedScrollView事件处理模型

        NestedScrollView事件处理模型,是通过由消费事件的View发起和协调。父view被动接收回调,并在回调中处理消费事件,父view回调完成子view继续处理,这样反复进行,达到子view和父view交替消费事件的嵌套滑动效果。

我们看到最终的效果可能是:一次事件序列,子view滑动->父view滑动->子view滑动->父view滑动,知道事件被消费完或者达到子view分配上限3次。

通过一个简单的事件处理模型理解嵌套滑动:

  1. 子view消费事件前,总是先询问父view是否需要消费;
  2. 父view消费事件后,子view在消费剩余的部分;
  3. 一个事件子view最多询问父view两次,若第三次还有剩余,子view会全部消费掉。
  4. 中途不论父view还是子view将事件全部消费完,则事件派发提起结束。

 

三、NestedScrollView嵌套滑动源码分析

NestedScrollView是AndroidX中的插件,依赖AndroidX之后就可以使用该控件。

写一个简单的布局,父控件包含一个图片,一段文字,以及包裹一个子控件。子控件包含一段文字。

        在子类onTouchEvent方法中实现嵌套滑动:

 1、在ACTION_DOWN事件中调用startNestedScroll方法,开启嵌套滑动,这里helper是NestedScrollingChildHelper,这个是处理嵌套滑动的帮助类,使用它来简化我们需要处理的工作。

http://www.cnnetsun.cn/news/3133575.html

相关文章:

  • 炉石传说BepInEx插件深度解析:HsMod高效游戏增强技术实现指南
  • 如何使用FLoRES-200评估基准?完整入门教程与最佳实践
  • gsplat完整指南:如何快速掌握CUDA加速的高斯溅射技术
  • PaperOnboarding:打造惊艳Material Design引导页的终极指南
  • MinIO实战——从环境搭建到生产级文件上传的完整链路
  • 解决LLM编码复杂性陷阱的工程实践指南
  • Boss Show Time:终极招聘时间插件 - 四大平台职位发布时间一键展示
  • 企业文档管理数字化转型:基于kkFileView的全栈文件预览解决方案深度剖析
  • BLDC机器人智能运动控制:负载自适应与滑移检测技术
  • 25KB极简视频播放器:让你的网站视频体验瞬间升级
  • OpenTracing-Python实战:如何在Python微服务中实现分布式追踪
  • Tokio 超时控制:异步任务不能无限等模型响应
  • 如何下载和使用Git:初学者指南
  • MySQL 8 设置允许远程连接(Windows环境)
  • 干货分享:SQLSERVER使用裸设备
  • 数据库同步中间件:PanguSync
  • 【学习记录】Week10(三):Tcache 溢出与扩展利用——单链表劫持与高版本绕过
  • Qwable-9B模型实战教程:用GGUF格式在本地部署高性能AI代码助手
  • Numactl项目中CPU亲和性设置失效问题分析
  • 非标设备运动控制:直线模组与直线电机核心技术解析
  • 模拟人工智能(Simulated Artificial Intelligence, SAI):一种工程化认知架构的理论范式
  • Exercises Dataset多平台适配:响应式设计与跨平台开发完整指南
  • 计算机毕业设计之基于用户行为的个性化推荐机票推荐系统
  • TVA:具身智能的动力引擎与能力底座(系列)
  • d3-annotation常见问题解答:从安装到部署的全方位解决方案
  • Windmill React UI组件最佳实践:10个提升用户体验的实用技巧
  • WebdriverIO v9多窗口自动化测试:解决切换后getUrl失效的完整方案
  • 新能源汽车热管理系统核心零部件及工作原理详解
  • 嵌入式系统按键管理:74HC32与PIC24FV16KA301高效方案
  • cann/mat-chem-sim-pred PID窗口残差诊断算法