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 国际许可协议