之前听同事提起过 NestedScrollingView,但是一直没有时间去了解,最近一段时间比较空,才开始去了解。先点开,看 NestedScrollingView 源码:
public class NestedScrollView extends FrameLayout implementsNestedScrollingParent,NestedScrollingChild,ScrollingView
可以发现实现了两个没有见过的接口:NestedScrollingParent,NestedScrollingChild,也是这篇文章的主角。 Android 就是通过这两个接口,来实现 子 View 与父View 之间的嵌套滑动。这样的嵌套滑动机制是在 Android 发布 Lollipop 之后提供的。不过同样在Support v7 中同样支持了。同时 RecycleView 以及 Android 5.0 以上的系统原声 View 大部分都已经支持嵌套滑动了 。
NestedScrolling 机制能够让父 View 和子 View 在滚动式进行配合,而要实现这样的交互机制,首先父 view 要实现 NestedScrollingParent 接口,而子 View 需要实现 NestedScrollingChild 接口,在这套机制中子 View是发起者,父 view 是接受回调并做出响应的。
四个主要接口
当我们自己再去写的时候,会碰到以下这四个类(接口):
//主要接口
NestedScrollingChild
NestedScrollingParent帮助类
NestedScrollingChildHelper
NestedScrollingParentHelper
正如前面所说的,很