前面實現了嵌套滑動,那麼下面,就要考慮如何將動畫加入其中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