Android仿仿XListView支持下拉刷新和上划加载更多的自定义支持下拉刷新和上划加载更多的自定义RecyclerView
主要介绍了仿XListView支持下拉刷新和上划加载更多的自定义RecyclerView的实例代码,非常不错,具有参考价值,感兴趣的朋友可以参考下
首先给大家展示下效果图,感觉还不错,请继续往下阅读:
下拉刷新:下拉刷新:
上划加载上划加载
在项目更新的过程中,遇到了一个将XListView换成recyclerView的需求,而且更换完之后大体效果不能变,但是对于下拉刷新这样的效果,谷歌给出的解决方案是把
RecyclerView放在一个SwipeRefreshLayout中,但是这样其实是拉下一个小圆形控件实现的,和XListView的header效果不同。在网上找了很多的别人代码,都没有实
现我想要的效果,于是自己动手写了一个。
具体实现的效果有以下几条
下拉刷新功能:下拉刷新功能:
1、实现一个有弹性的拖出效果实现一个有弹性的拖出效果:思路参考XListView,recyclerView的position=0的位置放一个header布局,这个布局的margin top默认为负的布局高度,所以这块布
局就一直处于屏幕外部,在下拉的时候通过onTouchListener根据手指的移动动态修改margin top,慢慢的拖出,当拖出的距离也就是margin top变为正数以后,就盖
面header布局的状态,改变箭头的方向并改变提示语
2、实现有弹性的回弹效果实现有弹性的回弹效果:用timerTask写了一个动态修改的header布局的margin top的动画,每隔一定的时间减小margin top的值,当用户松手的时候通过一个函数
updateHeaderHeight()来执行这个动画。
3、实现用户非手动拖拉的自动刷新效果:实现用户非手动拖拉的自动刷新效果:这个recyclerView还有一个方法叫forceRefresh(),就是不需要用户手动下拉,头部自己滚动出来,然后刷新完再自己收
回去,自动下拉也是用一个timerTask每隔十几毫秒增加margin top的值让头部慢慢露出来
上划加载更多功能:上划加载更多功能:
1、实现滚动到底部自动停住效果:实现滚动到底部自动停住效果: 有时候recyclerVIew滚动太快,滚到底部的时候会根据惯性向上飘,这个地方到底的时候监控recyclerView滚动速度,如果非常快
说明是惯性滚动,就不修改footer布局的高度
2、实现向上拖动效果实现向上拖动效果:复写了recyclerView的onScrollListener,在手指向上滚动的时候,通过updateFooterHeight()方法动态修改底部footerView的margin
bottom,同headerView一样,在手指移动的时候让这个margin跟着变大,以增加footer布局的高度,而且手指移动的越网上,增加的margin的高度就越小,实现一个
有弹性的上拉效果,防止误操作。