View事件的传递体系——嵌套滑动

难点:当子控件消费了事件,那么父控件就不会再有机会处理事件

原理:子控件在接收到滑动一段距离的请求时,先询问爸爸是否要滑动,如果爸爸滑动了一部分,就通知子控件消耗的距离,子控件只能处理剩下的距离,处理结束之火,再把剩余的滑动距离传给父控件

兼容性问题:

SDK 21 以下:需要去实现 v4包里面的NestedScrollingChild,或者NestedScrollingParent
SDK 21及以上,View以及ViewGroup新增了这些方法
NestedScrollingChild NestedScrollingParent ViewGroup View
setNestedScrollingEnabled setNestedScrollingEnabled
isNestedScrollingEnabled onNestedScrollAccepted onNestedScrollAccepted isNestedScrollingEnabled
startNestedScroll onStartNestedScroll onStartNestedScroll startNestedScroll
stopNestedScroll onStopNestedScroll onStopNestedScroll stopNestedScroll
hasNestedScrollingParent getNestedScrollAxes getNestedScrollAxes hasNestedScrollingParent
dispatchNestedScroll onNestedScroll onNestedScroll dispatchNestedScroll
dispatchNestedPreScroll onNestedPreScroll onNestedPreScroll dispatchNestedPreScroll
dispatchNestedFling onNestedFling onNestedFling dispatchNestedFling
dispatchNestedFling onNestedPreFling onNestedPreFling dispatchNestedPreFling

默认处理逻辑:
本身不支持滑动的控件,即使有嵌套滑动的相关方法也不能进行嵌套滑动,所以要让控件支持嵌套滑动,那么要满足:
1.控件类具有嵌套滑动的相关方法,要买仅支持21之后,要么实现对应的接口
2.控件要在合适的位置主动调起嵌套滑动方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《小径分叉的花园》 ——【阿根廷】博尔赫斯 著 镜子和父亲身份是可憎的,因为它使宇宙倍增和扩散。 有的物体由两个术...
    Eugenia海胆阅读 991评论 0 0
  • 2019.4.19 星期五 阴 今天又降温了,还有下雨的预兆。 终于,今天我把昨天存的2千多又给用了。吃土吧。
    阿文YovinTeng阅读 240评论 1 2
  • 我想象过很多种我们再次见面的场景,我笑 说:“咦,你也在这儿啊。”还是叫一声师兄 好呢?然后一定要笑,像不曾爱过不...
    半句阅读 206评论 0 1
  • 龅牙兔,对姐姐抱怨她,越来越讨厌她,,不知道她是否在门外偷听,她很废,心里没数,总觉得丰聪明,,内心情感更丰富,,...
    时间的列车飞驰阅读 278评论 0 0
  • 印刷质量比想象中要好,正好有复刻版大全集,于是拿出来比了下。 印刷基本无可挑剔,内封实在是好看。
    Cyanopica阅读 854评论 7 3