Android PullToRefresh下拉刷新功能
Android 里的下拉刷新功能,真的是列表交互里常用的那一项了。用户手指一拉、轻轻一放,就能触发内容更新。你要是做新闻、社交、商城类 App,这玩意儿基本跑不了。
SwipeRefreshLayout是 Google 官方出的,用起来比较省事。直接包一层你要刷新的列表,比如RecyclerView
或ListView
,再加个监听器就搞定了。简单又稳定,适合对样式要求不高的场景。
想要效果更炫、定制更自由?那可以看看第三方的PullToRefresh库。支持更多视图类型,还能加自定义的刷新动画,比如你喜欢的那种旋转加载圈。配置稍微多点,但灵活性也上来了。
下面这段代码是用SwipeRefreshLayout
实现的最基础刷新逻辑,几行搞定:
SwipeRefreshLayout swipeRefreshLayout = findViewById(R.id.swipe_refresh_layout);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
// 刷新逻辑写这
swipeRefreshLayout.setRefreshing(false); // 刷新完成后记得关掉加载圈
}
});
如果你用的是PullToRefresh
,代码会稍微复杂一点,不过可玩性更高:
PullToRefreshListView pullToRefreshListView = findViewById(R.id.pull_to_refresh_list_view);
pullToRefreshListView.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(PullToRefreshBase refreshView) {
// 异步加载数据
pullToRefreshListView.onRefreshComplete();
}
});
哦对了,不管用哪个方案,都建议你把刷新逻辑放到后台线程跑,比如用AsyncTask
、Retrofit
配RxJava
都挺方便。别让主线程卡住,用户体验会差多。
还要注意的是,像ScrollView
或WebView
这种非列表控件,用SwipeRefreshLayout
时有点小坑,得好滑动冲突,要不容易出现“拉不动”的情况。
如果你要加下拉刷新功能,推荐先从SwipeRefreshLayout
入手,简单上手快;需求复杂再上PullToRefresh
,灵活性更高。可以参考下面这些示例文章:
如果你最近在做内容流 App 或者需要动态加载数据的界面,下拉刷新功能确实是个加分项,值得投入一点时间搞清楚。
112.65KB
文件大小:
评论区