前言
最近在学习下拉刷新的过程中,遇到了一个需求:实现一个图书馆藏的首页推荐页,为了追求良好的用户体验,要求刚进入页面时就开始刷新,如下图:
为了实现这个效果使用了SwipeRefreshLayout这个控件,接下来来说如何实现。
实现步骤
- 在布局文件中添加该控件
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/library_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</android.support.v4.widget.SwipeRefreshLayout>
- 在Activity中初始化这个控件
private void initSwipeRefresh() {
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.library_refresh);
// 设置颜色属性的时候一定要注意是引用了资源文件还是直接设置16进制的颜色,因为都是int值容易搞混
// 设置下拉进度的背景颜色,默认就是白色的
swipeRefreshLayout.setProgressBackgroundColorSchemeResource(android.R.color.white);
// 设置下拉进度的主题颜色
swipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, R.color.colorPrimaryDark);
listener = new SwipeRefreshLayout.OnRefreshListener() {
public void onRefresh() {
//TODO
//在这执行你的操作
}
};
swipeRefreshLayout.setOnRefreshListener(listener);
}
- 在activity的onCreate()方法中执行
swipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(true);
}
});
listener.onRefresh(); //这句话务必执行
通过以上的代码即可在进入首页时自动刷新了。
问题
那应该如何关闭这个刷新动过呢?
在需要关闭的地方执行以下方法即可
swipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(false);
}
});
需要注意的地方
想要在界面一加载的时候出现更新效果,直接调用setRfreshing(true)是出不来效果的,务必需要在
swipeRefreshLayout.setRefreshing(true);
后添上一句
listener.onRefresh();