zhangxq / Qrefreshlayout
Licence: mit
下拉刷新,上拉加载更多,自动加载更多,用法同SwipeRefreshLayout,兼容所有view,兼容nested滚动,可以自定义header footer,支持下拉到二楼
Stars: ✭ 75
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
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
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
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
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里提出来,我会尽力而为。
效果展示
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].