10年Android老司机教你打造独一无二的刷新加载框架

首先我们给出如下几个参数,后面要用:

10年Android老司机教你打造独一无二的刷新加载框架
既然是刷新,我们的滚动肯定是在 父view 之前的。所以我们需要在 onNestedPreScroll 这个方法里面写上我们所需要改动的x,y值。

我们需要用 父view 去拦截它。我们需要判断 dy 的值是否大于0,因为大于0是刷新操作,小于0是加载操作。然后我们需要判断 recyclerview 是否是纵向的而不是横向的。

10年Android老司机教你打造独一无二的刷新加载框架
上拉加载

上面我也说了 onNestedPreScroll 这个方法中判断 dy<0 才是加载操作。所以综上所述,代码变成了这样:

10年Android老司机教你打造独一无二的刷新加载框架
最后我们需要在 子view 滑动结束后,实行如下操作:

10年Android老司机教你打造独一无二的刷新加载框架
其实最主要的两个方法已经解决了,其他到没什么了,这边,我把 nestedscrolling 的8个接口的功能和自定义 recyclerview 放出来。已便大家参考。希望大家都能实现自己的刷新加载。告别 swiperefreshlayout。

添加header和footer

这里我们参考 listview 自带的 addheaderview 和 addfooterview。代码如下:

10年Android老司机教你打造独一无二的刷新加载框架
几个接口的实现:

10年Android老司机教你打造独一无二的刷新加载框架
10年Android老司机教你打造独一无二的刷新加载框架
自定义recyclerview

既然是自己写的刷新加载框架,总不能还有自定义 layout 中在放个 recyclerview。多麻烦,自定义一个,直接放在里面,然后分别放个 header 和 footer,就没必要每次有页面用到刷新都要写一个布局。3个布局解决整个项目的刷新和加载。话不多说,代码如下:

10年Android老司机教你打造独一无二的刷新加载框架
10年Android老司机教你打造独一无二的刷新加载框架
这样我们变实现了自己的刷新加载框架,代码我已上传到github:

https://github.com/sw950729/SWPullRecyclerLayout
至于使用方法如下:

jcenter:

compile 'com.angel:SWPullRecyclerLayout:1.0.0'
maven:

10年Android老司机教你打造独一无二的刷新加载框架
依旧是那2句话。不管用什么我们需要知道原理。还有就是有什么不懂的提出来。可以一起讨论。

更多

10年Android老司机教你打造独一无二的刷新加载框架

猜你喜欢

转载自blog.51cto.com/13807306/2129894