穿裤衩闯天下

Android开发之google官方下拉刷新SwipeRefreshLayout的使用

最近在写的一个软件要用到下拉刷新,说到下拉刷新,网上有很多的自定义样式,其实google已经出了官方的下拉刷新组建,而且更新过的更好看,是一个不停旋转的彩色缺口圆环,我很喜欢,所以打算用官方的下拉刷新,
首先要使用SwipeRefreshLayout,要在布局文件中使用它,而且它只能包含一个子控件,同时必须是可滚动的,比如ScallViewListViewGridView等;
部分布局代码如下:

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

接着就是在java代码中去获得控件,并监听控件达到出发刷新的目的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 初始化下拉刷新组件
private void initSwipeRefreshLayout() {
mSwipeRefreshLayout.setProgressViewOffset(false, 0, 220);
mSwipeRefreshLayout.setColorSchemeResources(R.color.ml_blue, R.color.ml_orange, R.color.ml_green, R.color.ml_red, R.color.ml_purple);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mSwipeRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(false);
}
},
5000);
}
});
}

在上边的代码中主要调用了SwipeRefreshLayout的几个方法:

  • setProgressViewOffset(false, 0, 220);设置刷新进度圈出现的方式、开始位置、结束位置,默认就是从顶部开始放大出现,但是距离太近,所以看了下SwipeRefreshLayout的源码,找到了一个属性mCurrentTargetOffsetTop,发现是可以自定义刷新进度的位置的;
  • setColorSchemeResources();为进度圈设置颜色样式;可以设置多个
  • setOnRefreshListener();SwipeRefreshLayout控件添加监听器
  • setRefreshing();停止刷新
    其中在OnRefreshListener的onRefresh()方法中就是我们要实现的刷新需要做的一些事情,这里我用个计时器模拟刷新5s,然后关闭进度圈;
    OK 设置完这些之后,就可以在应用中使用官方的下拉刷新了!

阿弥陀佛,施主,来个馒头吧 😋 ~