首先是xml代码

1
2
3
4
5
6
7
8
9
10
11
12
<android.support.v4.app.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/swipeLayout">

<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/seartext" />

</android.support.v4.app.widget.SwipeRefreshLayout>

将listview或者recyclerview放在SwipeRefreshLayout里面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//获取控件
SwipeRefreshLayout swipeRefreshLayout = findViewById(R.id.swipeRefreshLayout);

设置下拉刷新进度的颜色
首先在res/values/color中定义颜色
<color name="red">#FFFF00</color>
然后再是使用下面代码进行设置
swipeRefreshLayout.setColorSchemeResources(R.color.red);
还可以支持三种颜色随意变换swipeRefreshLayout.setColorSchemeResources(R.color.read,R.color.green,R.color.blue);
//设置刷新监听事件在这里面放加载数据的代码
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//这里获取数据的逻辑
swipeRefreshLayout.setRefreshing(false);
}
});

//其他设置
//设置进度View样式的大小,只有两个值DEFAULT和LARGE,表示默认和较大
swipeRefreshLayout.setSize(DEFAULT);
//设置触发下拉刷新的距离
swipeRefreshLayout.setDistanceToTriggerSync(300);
//设置动画样式下拉的起始点和结束点,scale 是指设置是否需要放大或者缩小动画。
swipeRefreshLayout.setProgressViewOffset(boolean scale, int start, int end)
//设置动画样式下拉的结束点,scale 是指设置是否需要放大或者缩小动画
swipeRefreshLayout.setProgressViewEndTarget(boolean scale, int end);
//如果自定义了swipeRefreshLayout,可以通过这个回调方法决定是否可以滑动。
setOnChildScrollUpCallback(@Nullable OnChildScrollUpCallback callback)

注意了出现这个报错是因为你可能用的androidx所以
?android.view.InflateException: Binary XML file line #17: Error inflating class android.support.v4.app.widget.SwipeRefreshLayout
将XML从更改android.support.v4.widget.SwipeRefreshLayout
改为androidx.swiperefreshlayout.widget.SwipeRefreshLayout