Android NestedScrolling解决滑动冲突问题(2) - fling问题与NestedScroll++

本文详细介绍了如何在Android中处理NestedScrolling的滑动冲突问题,包括NestedScrollingChild和NestedScrollingParent的交互逻辑。同时,讨论了fling事件的处理,以及NestedScroll++接口如何改进fling事件的联动,以实现更复杂的滑动效果。
摘要由CSDN通过智能技术生成

滑动的处理

在前一篇文章 Android NestedScrolling解决滑动冲突问题(1) - 相关接口 中,我们分析了解决滑动冲突问题的 NestedScroll 接口,也给出了解决此类问题的一般性方案:

NestedScrollingChild侧

NestedScrollingChild(后面简称NC)处理MotionEvent(一般在onTouchEvent中,如果是ViewGroup还要注意onInterceptTouchEvent的处理,拦截滑动相关的MotionEvent事件),分析用户滑动操作。

在滑动开始时,调用startNestedScroll找到联动此次滑动的NestedScrollingParent(后面简称NP)。

对于每次用户交互产生的滑动距离,先调用dispatchNestedPreScroll,询问联动NP是否预先处理此滑动,如果NP预先处理了,会给出消耗掉的滑动距离。

对于NP预处理剩下的滑动距离,NC决定自己是否处理部分或者全部距离(自己的滑动)。

如果NC自己滚动之后,还剩下部分滑动距离,则调用dispatchNestedScroll让NP自行选择是否处理最后剩下的这些滑动距离。

用户交互停止滑动,调用stopNestedScroll通知NC停止滑动联动。

NestedScrollingParent侧

onStartNestedScroll中,决定是否与此次NC发起的滑动请求联动,如果决定联动,返回true,否则返回false。返回true之后,会收到onNestedScrollAccepted回调,表示NC同意与其联动,可以开始做初始化操作了;返回false之后,后面的NC联动操作不会通知此NestedScrollingParent(不会收到后续的onNestedPreScrollonNestedScrollonStopNestedScroll等)。

onNestedPreScroll<

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值