您的位置:首页 > 移动开发 > Android开发

利用SwipeRefreshLayout实现类似知乎客户端的一打开界面就自动刷新的效果

2017-12-01 17:42 411 查看

前言

最近在学习下拉刷新的过程中,遇到了一个需求:实现一个图书馆藏的首页推荐页,为了追求良好的用户体验,要求刚进入页面时就开始刷新,如下图:



为了实现这个效果使用了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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 控件
相关文章推荐