QRefreshLayout,用法同SwipeRefreshLa

作者: 空手接白刀 | 来源:发表于2019-04-23 14:52 被阅读50次

    公司项目之前一直使用官方SwipeRefreshLayout,效果不错但是扩展性较差,找遍了市面上的下拉刷新控件,对Nested滚动的支持都不是很好,奈何公司项目有两个页面实现效果需要支持Nested滚动。产品经理不止一次产生了修改下拉刷新动画的念头,都被我以下拉刷新控件不好替换为由勉强延后,但是问题总得解决,没有轮子就自己造一个,用了差不多两周的时间,终于完成了自己的下拉刷新及加载更多控件。
    github地址: https://github.com/zhangxq/QRefreshLayout

    简介

    QRefreshLayout参考了SwipeRefreshLayout,所以使用方法和SwipeRefreshLayout相同,并且增加了上拉加载更多功能,支持所有View子类的刷新,支持Nested嵌套滚动。

    效果展示

    下拉刷新和加载更多
    与Nested滚动兼容效果

    使用方式

        allprojects {
            repositories {
                ...
                maven { url 'https://jitpack.io' }
            }
        }
    
        dependencies {
            implementation 'com.github.zhangxq:QRefreshLayout:1.0.2'
        }
    
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <com.zhangxq.refreshlayout.QRefreshLayout
            android:id="@+id/refreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerView"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </com.zhangxq.refreshlayout.RefreshLayout>
    </LinearLayout>
    
      refreshLayout.setOnRefreshListener(this);
      refreshLayout.setOnLoadListener(this);
    

    接口说明

    名称 功能
    setOnRefreshListener 设置下拉刷新监听
    setOnLoadListener 设置加载更多监听
    setRefreshing 打开或者关闭下拉刷新动画
    setLoading 打开或关闭加载更多动画
    setColorSchemeResources setColorSchemeColors 设置默认下拉刷新进度圈颜色
    setProgressBackgroundColorSchemeResource setProgressBackgroundColorSchemeResource 设置默认下拉刷新进度圈背景颜色
    setRefreshView 设置下拉刷新view
    setLoadView 设置加载更多view
    setLoadEnable 设置加载更多开关, setOnLoadListener调用后默认开启
    setAutoLoad 设置自动加载更多开关,setOnLoadListener调用后默认开启

    自定义下拉刷新和加载更多view

    setRefreshView 和 setLoadView 两个方法用于接收用户自定义的下拉刷新和加载更多动画view,参数都是接收一个继承自RefreshView的子类,RefreshView实现了一个Refresh接口,代码如下:

    public interface Refresh {
        /**
         * 手指拖动中
         *
         * @param dragDistance      手指拖动的距离
         * @param distanceToRefresh 下拉到触发刷新位置的距离
         * @param totalDistance     总的下拉空间
         */
        void setHeight(float dragDistance, float distanceToRefresh, float totalDistance);
    
        /**
         * 触发刷新
         */
        void setRefresh();
    
        /**
         * 下拉刷新
         */
        void setPullToRefresh();
    
        /**
         * 释放即可刷新
         */
        void setRefeaseToRefresh();
    }
    

    可以看到,接口提供了三个个回调方法,对应与下拉或上拉过程中常用的三个时间点,setHeight方法提供了手指拖动的距离,方便用户处理拖动动画。
    继承RefreshView覆盖这四个方法,就可以方便得实现自己想要的动画效果。

    onemore

    如果只想在SwipeRefreshLayout基础上增加加载更多功能,请查看我的另一篇博文:继承自SwipeRefreshLayout,实现加载更多
    如果这骗博文帮到了您,请给我的github点个小星星吧,感谢。

    相关文章

      网友评论

        本文标题:QRefreshLayout,用法同SwipeRefreshLa

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