Android-NestedScrolling Child与Parent的实例学习
遵守约定:就是google写了一套约定规范 这样大家都照规定写就可以兼容了;
实例demo:zone-sdk项目运行后:->onTouch事件传递与其辅助类的研究->即可看到;
初步理解
方法对应:子view会 触发 父view方法。一般是子view发起调用,父view接受回调。
| 子view | 父view | 
|---|---|
| startNestedScroll | onStartNestedScroll、onNestedScrollAccepted | 
| dispatchNestedPreScroll(child消耗前传递给 parent) | onNestedPreScroll(子view消耗前) | 
| dispatchNestedScroll(child消耗后传递给 parent) | onNestedScroll(子view消耗后) | 
| stopNestedScroll | onStopNestedScroll | 
fling和 Scroll 类似 就不说了
##总结就是:
子view 消失事件前,把数据传递到父布局中问你是否消耗?
子view:dispatchNestedPreScroll-> 父view:onNestedPreScroll
父view处理完后 剩下的事件传递回了 子view:dispatchNestedScroll  子view在其中消耗了事件后。把剩下的事件传递给 父view:onNestedScroll.
Parent
| 1 | 在写具体的实现前,先对需要用到的上述方法做一下简单的介绍: | 
摘自HongYang: http://blog.csdn.net/lmj623565791/article/details/52204039
Child
方法的使用时机:
startNestedScroll,stopNestedScroll;

dispatchNestedPreScroll使用时机  此例为RecyclerView的内容;
(因为是子view消耗钱 父消耗 )  所以 用if判断 父亲是否消耗;

dispatchNestedScroll 则和上边不同;是child先消耗了;在吧剩下的给NestedParent;看他消耗不;
参考RecyclerView

注意:
1.抖动问题:offsetInWindow 如果不加这个参数会出现抖动,
因为父亲消耗后,布局会偏移导致 每次的触摸事件e 其实也跟着偏移了(偏移量是上一次的布局的位移)所以e需要修正;
Reference&Thanks:
原文作者: Zone
原文链接: https://luhaoaimama1.github.io/2016/10/26/NestedScrolling/
许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议