All Projects → zhangxq → Qrefreshlayout

zhangxq / Qrefreshlayout

Licence: mit
下拉刷新,上拉加载更多,自动加载更多,用法同SwipeRefreshLayout,兼容所有view,兼容nested滚动,可以自定义header footer,支持下拉到二楼

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Qrefreshlayout

Xrefreshlayout
【已过时,不再更新,请使用更强大的SmartRefreshLayout!】A refresh layout(无侵入下拉刷新和加载布局), can refresh RecyclerView for all LayoutManager, NestedScrollView。
Stars: ✭ 127 (+69.33%)
Mutual labels:  pull-to-refresh, refreshlayout
Swiperefreshlayout
swipeRefreshLayout refresh pull-to-refresh
Stars: ✭ 26 (-65.33%)
Mutual labels:  pull-to-refresh, refreshlayout
Liquidrefreshlayout
Liquid Refresh Layout is a simple SwipeToRefresh library that helps you easily integrate SwipeToRefresh and performs simple clean liquid animation
Stars: ✭ 114 (+52%)
Mutual labels:  pull-to-refresh, refreshlayout
Springview
🔥 A custom view pull to refresh,support ScrollView,ListView,RecyclerView,WebView and all another views, easy to use
Stars: ✭ 1,936 (+2481.33%)
Mutual labels:  pull-to-refresh, refreshlayout
ParticlesRefreshLayout-android
Particles Refresh Layout library for Android
Stars: ✭ 15 (-80%)
Mutual labels:  pull-to-refresh, refreshlayout
Pullrefreshlayout
下拉刷新,上拉加载,真实的回弹(overscroll)效果(媲美qq),且大小只有37KB(是其他主流刷新库或回弹库的1/2,1/3,甚至是1/4),同时,自定义header和footer,可以实现任何你想的到的功能(例如:自动触发加载更多、二级刷新等)
Stars: ✭ 639 (+752%)
Mutual labels:  pull-to-refresh, refreshlayout
Brv
Android上最强大的RecyclerView库
Stars: ✭ 345 (+360%)
Mutual labels:  pull-to-refresh, refreshlayout
Smartrefreshlayout
🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动,具有极强的扩展性,集成了几十种炫酷的Header和 Footer。
Stars: ✭ 23,185 (+30813.33%)
Mutual labels:  pull-to-refresh, refreshlayout
Web Pull To Refresh
A native-like JavaScript pull to refresh implementation for the web.
Stars: ✭ 530 (+606.67%)
Mutual labels:  pull-to-refresh
Crrefresh
An easy way to use pull-to-refresh
Stars: ✭ 832 (+1009.33%)
Mutual labels:  pull-to-refresh
Pulltomakeflight
Custom animated pull-to-refresh that can be easily added to UIScrollView
Stars: ✭ 497 (+562.67%)
Mutual labels:  pull-to-refresh
Pulltorefreshkit
【Deprecated】Pull to refresh in Swift, easy to use, easy to customize(下拉刷新/QQ/淘宝/优酷/雅虎天气/大众点评)
Stars: ✭ 533 (+610.67%)
Mutual labels:  pull-to-refresh
Refresher
DEPRECATED: Pull to refresh in Swift
Stars: ✭ 885 (+1080%)
Mutual labels:  pull-to-refresh
React Native Ultimate Listview
A high performance FlatList providing customised pull-to-refresh | auto-pagination & infinite-scrolling | gridview layout | swipeable-row.
Stars: ✭ 497 (+562.67%)
Mutual labels:  pull-to-refresh
Ultimaterefreshview
UltimateRefreshView 实现下拉刷新,上拉加载更多的轻量级库;支持RecyclerView ,ListView ,ScrollView & WebView
Stars: ✭ 64 (-14.67%)
Mutual labels:  pull-to-refresh
React Native Pull Refresh
Custom pull to refresh component for Android
Stars: ✭ 456 (+508%)
Mutual labels:  pull-to-refresh
Pulltorefresh H5 Iscroll
基于IScroll5的PullToRefresh实现.。提供多套皮肤机制,便于拓展!
Stars: ✭ 56 (-25.33%)
Mutual labels:  pull-to-refresh
Pullrefresh
前端, 下拉刷新
Stars: ✭ 7 (-90.67%)
Mutual labels:  pull-to-refresh
Swiftpulltorefresh
An easy way to implement pull-to-refresh feature based on UIScrollView extension, written in Swift 4.
Stars: ✭ 451 (+501.33%)
Mutual labels:  pull-to-refresh
Liquid Pull To Refresh
🔁 A custom refresh indicator for flutter.
Stars: ✭ 769 (+925.33%)
Mutual labels:  pull-to-refresh

QRefreshLayout

下拉刷新,上拉加载更多,自动加载更多,用法同SwipeRefreshLayout,兼容所有view,兼容nested滚动,可以自定义刷新动画,支持下拉到二楼

不定期更新,大家有什么想加的功能和意见可以在issues里提出来,我会尽力而为。

效果展示

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

demo下载

版本更新说明

使用方式

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}
dependencies {
  implementation 'com.github.zhangxq:QRefreshLayout:1.0.8'
}
<?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调用后默认开启
setListViewScrollListener 设置ListView的滚动监听器(由于需要做自动加更多,所以占用了监听器,在这里回调回来)
setPullToRefreshHeight 设置下拉到"释放即可更新"的高度(默认170px)
setLoadToRefreshHeight 设置上拉到"释放即可加载更多"的高度(默认170px)
setRefreshHeight 设置下拉刷新动画高度(默认150px,需要在setRefreshing之前调用)
setLoadHeight 设置加载更多动画高度(默认110px)
setIsCanSecondFloor 设置是否可以到达二楼
setSecondFloorView 设置二楼view,仅限于使用默认header的情况
isSecondFloor 当前是否在二楼
setBackToFirstFloor 回到一楼
setPullToSecondFloorHeight 设置下拉到"释放到达二楼"的高度(默认500px)

自定义header和footer

setRefreshView 和 setLoadView 两个方法用于接收用户自定义的header和footer,setRefreshView接收一个继承自RefreshView的view,setLoadView接收一个继承自LoadView的view,RefreshView和LoadView的区别只是RefreshView比LoadView多了三个二楼相关的虚方法,所以我们只用看一下RefreshView的源码:

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.RelativeLayout;

import com.zhangxq.refreshlayout.defaultview.Refresh;

/**
 * Created by zhangxiaoqi on 2019/4/22.
 */

public abstract class RefreshView extends RelativeLayout implements Refresh {
    public RefreshView(Context context) {
        this(context, null);
    }

    public RefreshView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        setGravity(Gravity.CENTER);
    }

    /**
     * 释放即可到达二楼
     */
    public abstract void setReleaseToSecondFloor();

    /**
     * 展示二楼
     */
    public abstract void setToSecondFloor();

    /**
     * 回到一楼
     */
    public abstract void setToFirstFloor();
}

查看方法的注释,就可以明白对应的功能。 RefreshView和LoadView都实现了一个Refresh接口,代码如下:

public interface Refresh {
    /**
     * 手指拖动中
     *
     * @param height        显示出来的区域高度
     * @param refreshHeight 下拉到触发刷新位置的显示区域高度
     * @param totalHeight   总的显示区域高度
     */
    void setHeight(float height, float refreshHeight, float totalHeight);

    /**
     * 触发刷新
     */
    void setRefresh();

    /**
     * 下拉刷新
     */
    void setPullToRefresh();

    /**
     * 释放即可刷新
     */
    void setRefeaseToRefresh();
}

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

下拉到二楼功能

使用默认header情况下,如下两行即可实现下拉到二楼的功能,第二行的参数view就是你想要展示的二楼布局view。

qRefreshLayout.setIsCanSecondFloor(true);
qRefreshLayout.setSecondFloorView(view);

使用自定义header,则可以去掉第二行,然后使用自定义header中的三个回调方法,实现自己的二楼效果。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].