前面实现了嵌套滑动,那么下面,就要考虑如何将动画加入其中app
在NestedScrollerView 中 嵌套滑动的处理是由_NestedScrollCoordinator 统一管理处理的,为了可以协调当前body和header,这应该是最直接的方式动画
因此按照NestedScrollerView 中_NestedScrollCoordinator 的作法,建立一个类,继承ScrollActivityDelegate和ScrollHoldController,并修改position 的方法,将其中drag,hold等须要协调处理的方法交由这个新类实现。spa
跟NestedScrollerView不一样的是,嵌套滑动判断优先级应以最早接收到事件的控件先作响应,好比说,若是我先收到的是子Page的滑动事件,在没法滑动或者事件处理完以前,外部的pageView都应该是没法响应的。而非NestedScrollerView中根据滑动方向判断优先级的方式。orm
因此为了实现上面一点,咱们能够给position加上是否是inner这个标志,而后根据drag方法传入的inner标志判断当前触发的position是子Page仍是父Page。cdn
在applyUserOffset 方法中,判断子Page的position,其pixels加上滑动距离是否大于maxScrollExtent,经过这个简单判断一下是否是overScroll,并将事件根据结果分发给子Page或者父pageblog
在goBallistic 方法中,我是根据滑动方向判断子Page是否会overScroll。继承
固然,别忘了加上inner标志的处理事件
如今解决掉了嵌套动画的问题,说白了就是处理goBallistic以及Activity;
那么下面还需解决的问题还有:ci