您的位置:首页 > 移动开发 > Android开发

Android下拉刷新上拉加载控件,对所有View通用!

2016-05-27 16:48 489 查看


关闭

关闭

资讯安全论坛下载读书程序开发数据库系统网络电子书微信学院站长学院QQ手机软件考试

软件开发|web前端|Web开发|移动开发|综合编程|

首页 >
程序开发 >
移动开发 >
Android > 正文
Android下拉刷新上拉加载控件,对所有View通用!
2014-08-28 19 个评论 来源:zhongkejing的专栏
收藏

我要投稿


前面写过一篇关于下拉刷新控件的博客下拉刷新控件终结者:PullToRefreshLayout,后来看到好多人还有上拉加载更多的需求,于是就在前面下拉刷新控件的基础上进行了改进,加了上拉加载的功能。不仅如此,我已经把它改成了对所有View都通用!可以随心所欲使用这两个功能~~

我做了一个大集合的demo,实现了ListView、GridView、ExpandableListView、ScrollView、WebView、ImageView、TextView的下拉刷新和上拉加载。后面会提供demo的下载地址。

依照惯例,下面将会是一大波效果图:

demo首页也是可下拉的ListView,在底下可以加入table:



ListView:



GridView:



ExpandableListView:



ScrollView:



WebView:



ImageView:



TextView:



很不错吧?最后的ImageView和TextView是最简单的,直接在下面的接口方法里返回true。

增加上拉加载很简单,和管理下拉头一样,再多管理一个上拉头,也不费事;至于把它改成通用的就需要统一一下View的行为了,为此,我定义了这样一个接口:

?
从接口名就可以看出它是一个提供判断是否可拉的方法的接口。这个接口的两个方法,canPullDown()是判断何时可以下拉的方法,canPullUp()则是判断何时可以上拉,我在demo中的判断是滑到顶部的时候可以下拉,滑到底部的时候可以上拉。所有需要上拉和下拉的View都需要实现这个接口。后面会给出一些View的实现。先来看看改进后的自定义的布局PullToRefreshLayout,增加了一个上拉头,下拉头和上拉头之间的View是实现了Pullable接口的pullableView。相比前面的版本,这里有改动的需要注意的地方如下:

1、增加了上拉头,相应的也增加了控制变量。

2、拉动时消除content_view事件防止误触发不再使用反射,直接设置 event.setAction(MotionEvent.ACTION_CANCEL)。

3、消除了拉动过程中的多点触碰导致的剧变。

4、不再设置content_view的onTouListener,让使用者可以更加自由的设置监听器。

这个PullToRefreshLayout只负责管理三个控件,如果一个View需要有上拉下拉功能则只需实现接口就行了。下面看PullToRefreshLayout的代码,注释写了好多:

?
上面就是整个布局的代码,并不是很难。

下面看各个View对Pullable接口的实现,ListView和GridView还有ExpandableListView的判断方法是一样的:

PullableListView:

?
PullableExpandableListView:

?
PullableGridView:

?
PullableScrollView:

?
PullableWebView:

?
ImageView和TextView就不贴了,我直接在方法里返回了true。

OK了,整个demo的代码有点多,就不贴了。

源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: