NestedScrolling 机制深入解析
自定义Behavior —— 仿知乎,FloatActionButton隐藏与展示
仿新浪微博效果图简介
NestedScrolling,在 V4 包下面,在 22.10 版本的时候添加进来,支持 5.0 及 5.0 以上的系统。
NestedScrolling,简称嵌套滑动使用它可以实现一些非常绚丽的效果。如知乎的效果,UC 首页的效果,新浪微博发现的效果等。
Google 帮我们封装好了一些相应的空间,比如 RecyclerView 实现了 NestedScrollingChild 接口,CoordinatorLayout 实现了 NestedScrollingParent 接口,NestedScrollingView,SwipeRefreshLayout 实现了 NestedScrollingChild,NestedScrollingParent 接口等。
想比较于传统的事件分发机制,NetstedScroll 机制有什么优点,相信很多人都有这样的疑问?。
在传统的事件分发机制 中,一旦某个 View 或者 ViewGroup 消费了事件,就很难将事件交给父 View 进行共同处理。而 NestedScrolling 机制很好地帮助我们解决了这一问题。我们只需要按照规范实现相应的接口即可,子 View 实现 NestedScrollingChild,父 View 实现 NestedScrollingParent ,通过 NestedScrollingChildHelper 或者 NestedScrollingParentHelper 完成交互。
NestedScrolling 机制简述
NestedScrolling 的处理流程
NestedScrolling 机制主要有两个类,
- NestedScrollingParent
在嵌套滑动中,如果父View 想实现 嵌套滑动,要实现这个 NestedScrollingParent 借口,与 NestedScrollingChild 大概有一一对应的关系。
- NestedScrollingChild
在嵌套滑动中,如果scrolling child 想实现嵌套滑动,必须实现这个借口
- NestedScrollingChildHelper
实现 Child 和 Parent 交互的逻辑
- NestedScrollingParentHelper
实现 Child 和 Parent 交互的逻辑
它的处理流程大概是这样的: