美文网首页android基本功
利用SwipeRefreshLayout实现类似知乎客户端的一打

利用SwipeRefreshLayout实现类似知乎客户端的一打

作者: 雇个城管打天下 | 来源:发表于2017-12-01 17:42 被阅读41次

前言

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


刚进入就刷新

为了实现这个效果使用了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();

相关文章

网友评论

    本文标题:利用SwipeRefreshLayout实现类似知乎客户端的一打

    本文链接:https://www.haomeiwen.com/subject/itbwbxtx.html