RecyclerView已经写过两篇文章了,分别是Android 5.X新特性之RecyclerView基本解析及无限复用 和 Android 5.X新特性之为RecyclerView添加HeaderView和FooterView,既然来到这里还没学习的,先去学习下吧。

今天我们的主题是学习为RecyclerView添加下拉刷新和上拉加载功能。

首先,我们先来学习下拉刷新,google公司已经为我们提供的一个很好的包装类,那就是SwipeRefreshLayout,这个类可以支持我们向下滑动并进行监听。那么我们先了解一些基本知识,然后再从源码的角度来解析它。

A. SwipeRefreshLayout 是一个容器,直接继承于ViewGroup。

从其源码中我们可以直接看出,它是直接继承于ViewGroup的,所以它是一个容器,既然是一个容器,那么我们就可以向其中添加View。

B. SwipeRefreshLayout 封装了一些列的方法供我们使用,其中较常用的包括以下几个。

1. setColorSchemeResources: 刷新时动画的颜色,可以设置4个 2. setProgressBackgroundColorSchemeResource: 设置刷新时进度圆环的背景颜色 3. setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener): 设置手势滑动监听器。 4. setRefreshing(Boolean refreshing): 设置组件的刷洗状态。 5. setSize(int size):设置进度圈的大小,只有两个值:DEFAULT、LARGE

其中最主要的是setOnRefreshListener,它是用来监听我们下拉手势的回调方法。

C. 接下来我们再从源码的角度来了解这个类:

SwipeRefreshLayout 是一个ViewGroup容器,那在向它添加子View的时候,那首先会去测量各个子View的大小来确定本身的大小,并且还会制定子View的坐标位置,最后绘制View并显示出来。针对ViewGroup的绘制我之前有写过一篇博文,大家可以去参考下Android自定义控件之继承ViewGroup创建新容器(四) ,里面有详细的讲解。而我们今天所要讲解的是从SwipeRefreshLayout 的事件机制来说起,也更符合我们下拉刷新的主题。

<

网友评论