扫码 demo.apk 下载
- 刷新view模块化,可自由更换扩展,head foot可通用
- 轻松实现各种刷新效果,不用自己处理触摸事件
- 支持任意可滑动的控件
- 更多效果更新中...
Gradle
allprojects {
repositories {
maven {
url "https://jitpack.io"
}
}
}
dependencies {
implementation 'com.github.tohodog:QSRefreshLayout:1.1.3'
}
框架内置4个刷新view
CircleImageView 小圆球
BarRefreshView 变色的细条
IOSRefreshView ios上的一款刷新view
XMLRefreshView 就是那款经典的上下拉刷新
其他的饿了么京东等均在demo里
<org.song.refreshlayout.QSRefreshLayout
android:id="@+id/qs"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--head-->
<org.song.refreshlayout.refreshview.CircleImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" />
<!--foot-->
<org.song.refreshlayout.refreshview.BarRefreshView
android:layout_width="match_parent"
android:layout_height="2dp" />
</org.song.refreshlayout.QSRefreshLayout>
QSRefreshLayout qsRefreshLayout = (QSRefreshLayout) findViewById(R.id.qs);
//XML写了 这里就不用设置
//qsRefreshLayout.setHeadRefreshView(new CircleImageView(this));
//qsRefreshLayout.setFootRefreshView(new BarRefreshView(this));
qsRefreshLayout.enterHeadRefreshing(true);
qsRefreshLayout.setRefreshListener(new QSRefreshLayout.RefreshListener() {
@Override
public void changeStatus(boolean isHead, int status) {
if (status == QSRefreshLayout.STATUS_REFRESHING) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
qsRefreshLayout.refreshComplete();
}
}, 3000);
}
}
});
//refreshview setting
CircleImageView circleImageView= (CircleImageView) qsRefreshLayout.getHeadRefreshView();
circleImageView.setColorScheme(R.color.xxx,...);
实现IRefreshView接口
CSDN_BLOG
View getView();
void updateStatus(int status);//更新刷新状态
void updateProgress(float progress);//刷新进度 0 ~ 1(触发刷新)~ 更大
boolean isBringToFront();//是否view放在顶层
float dragRate();//滑动速度控制
int triggerDistance();//触发刷新的距离 [实际触摸距离*dragRate()>triggerDistance() 触发刷新
int maxDistance();//最大滑动距离 <=0不限制
int getThisViewOffset(int offset);//根据触摸位移 确定该view的位移 大于0=headview 小于0=footview
int getTargetOffset(int offset);//根据触摸位移 确定滚动view的位移 大于0=headview 小于0=footview
int completeAnimaDuration();//完成刷新后到消失 的动画时间, <=0使用默认时间
void isHeadView(boolean isHead);//是否顶部刷新view