React Native 新架构实战课
蒋宏伟
58 同城前端架构师,58RN 负责人
18214 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
React Native 新架构实战课
15
15
1.0x
00:00/00:00
登录|注册

17|Gesture(下):如何解决多视图多手势的冲突问题?

你好,我是蒋宏伟。
前一节课,我们讲解了手势进阶的一些内容,也分析了如何解决单视图多手势冲突的问题,但这个 Demo 其实挺基础的。今天我们要再深入一点,看一个稍微复杂点的案例,就是 Android 的回弹下拉刷新。
在 Gesture 的第一篇中我提到过,实现 Android 回弹下拉刷新的难点在于 Android 的 ScrollView 组件就没有滚动回弹属性 bounces。而 iOS 的 ScrollView 组件是有滚动回弹属性 bounces 的,而且是默认开启的。
在 Android 回弹下拉刷新案例中,会用到 Gesture 上中下三篇中的所有知识点,包括如何将手势库 Gesture 和动画库 Reanimated 搭配一起使用,如何解决单视图多手势的冲突问题,如何解决多视图多手势的冲突问题。
今天这一讲,一方面我会重点和你介绍如何解决多视图多手势的冲突问题,另一方面我会把 Gesture 上中下三篇的内容给你串起来,帮你实现 Android 回弹下拉刷新的效果。

Android 回弹下拉刷新

在真实的业务开发中,实现双端下拉刷新的正确逻辑是:iOS 基于 bounces 实现,Android 基于手势实现。不过,为了方便,我在写 Demo 的时候,直接把 iOS 的 bounces 效果关了,双端统一使用手势实现,省去了 if else 的代码,这样你看代码会容易一些。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了Android回弹下拉刷新的实现,重点介绍了解决多视图多手势冲突问题的方法。作者强调了在实现Android回弹下拉刷新时,涉及到手势库Gesture和动画库Reanimated的使用,以及如何解决单视图多手势冲突问题和多视图多手势冲突问题。文章详细介绍了回弹下拉刷新的实现原理和相关代码,包括对滚动偏移量和拖拽偏移量的处理,以及在松手刷新页面或取消刷新时的动画处理。通过对共享值和手势绑定的讲解,读者可以快速了解如何实现Android回弹下拉刷新效果。文章内容深入浅出,适合想要实现该效果的开发者阅读。同时,文章还提到了使用Gesture手势库和Reanimated动画库的强大之处,以及核心代码示例,为读者提供了实际操作的参考。文章通过站在单个手势的视角拆解问题,解决了多视图多手势的冲突,为读者提供了解决类似问题的思路和方法。文章还提到了解决手势冲突问题的三个要点,包括将Reanimated v2和Gesture v2搭配使用、Gesture手势库提供的丰富功能和创新的解决方案。这些内容为读者提供了解决手势冲突问题的新思路和方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《React Native 新架构实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • abc🙂
    有没有可能跟RecyclerListView组件结合起来,实现andaroid高性能的长列表弹性滚动

    作者回复: 可以的。RecyclerListView 提供了相关属性,可以把默认的 ScrollView 替换成 Animated.ScrollView。

    2022-05-10
    2
  • 风星舞
    请问GitHub仓库中运行android时的这个 yarn install-android-hermes 命令是什么作用?

    作者回复: 这个是开启 Hermes 的命令;现在可以直接通过配置同时开启新架构的 Hermes 和 Fabric 了。 On Android you can set newArchEnabled=true inside the android/gradle.properties file.

    2022-05-07
  • 侯同学
    蒋老师好 处理单视图多手势冲突的 Race Exclusive Simultaneous 与处理多视图多手势的 simultaneousWithExternalGesture requireExternalGestureToFail 有什么关系、区别 ? 只是处理单视图多手势冲突的 API 是在组件的角度,处理多视图多手势冲突的 API 是在手势的角度吗 ? 特别是 Simultaneous 与 simultaneousWithExternalGesture 感觉很像 另外上面代码中的 panGesture 调用 simultaneousWithExternalGesture 时为什么还要传入 scrollGesture tapGesture 外部组件为什么还要响应这两个事件,虽然我测试不传确实不行
    2023-09-03归属地:北京
  • songyq
    Gesture 手势库解决手势冲突的方案 确定不是抄的apple的手势代理么?
    2022-08-17归属地:北京
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部