Android开源项目-XListView
XListView是一个含有下拉刷新、上拉加载功能的Android开源项目。特点是代码量极少(只有3个java文件和2个xml文件即可实现),虽然功能较为单一,但是在项目开发中很实用。并且由于代码量小,可以很轻松的理解下拉刷新和下拉加载的源码机制,并加以自定制。
1 源码地址
最基础的XListView是:
https://github.com/Maxwin-z/XListView-Android
其中有一个fork库完善下拉刷新上拉加载更多的功能并实现自动刷新以及自动加载等功能, 并增加对ScrollView的支持。建议直接使用这个即可。本文即使用该库。
https://github.com/MarkMjw/PullToRefresh
2 使用步骤
下载源码后。
核心代码是XListView.java XHearderView.java XFooterView.java三个文件。(其中还有涉及一些资源文件)
具体怎么使用可以直接参考XListViewActivity.java这个activity。
代码使用示例:
Paste_Image.png样式截图:
1.png 2.png 3.png3 关键源码解析
3.1 XListView 主要功能
- 监听滑动位置,根据位置坐标计算是否上拉或者下拉,操作XHearderView和XFotterView的状态
- 对外提供接口监听onRefresh、onLoadMore
3.2 XHeaderView 主要功能
- 下拉刷新时下图部分的样式状态更新,可以根据需要自定制
3.3 XFooterView 主要功能
- 上拉加载更多时下图部分的样式状态更新,可以根据需要自定制
3.4 具体关键代码解析
XListView:
Paste_Image.png监听onTouch事件,当拉到listview的首个单元的时候并继续向下拉的时候,如果不松手,则XHearderView会动态设置拉高整个headview高度,这样就实现了可以不松手一直向下拉的效果。向上拉加载更多同理。
当松手时,判断如果listview当前位置是首个单元时,判断headerview的高度,如果大于指定的高度,即认为触发下拉刷新。调用onRefresh接口,并且将headerview设置为loading样式状态。想上拉加载更多同理。
以上即上拉下拉的核心算法。至于其他设置监听函数、设置是否开启上拉下拉功能、XHeaderView、XFooterView各个状态的样式都是可以自定制。
4 总结
XListView这个开源库虽然功能单一,但是现实项目开发中大部分上拉下拉的listview这个都可以实现。
并且由于代码简答,无论对于新手极易上手还是对于老手自定义样式和扩充功能都是极好的。强烈推荐!!!
结尾
更多文章关注我的公众号
我的公众号