Android SwipeRefreshLayout教程
2015-06-05 10:34
405 查看
在这篇文章中,我们将介绍SwipeRefreshLayout组件。这个组件被使用时用户可以使用扫动手势刷新UI。在以前的文章中,我们谈到了另一种方法来刷新,我们叫摇晃刷新界面,在这里用户摇晃智能手机,使用加速度传感器的应用程序刷新用户界面。我们在这篇文章中,主要介绍自定义实现此刷新模式。
SwipeRefreshLayout组件是由SDK提供,已经被用于一些Android自己的应用程序(比如Gmail)的实现。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/20/1b5c6d18da652d509a56a7368f52d674.png)
通常来说这是根组件:
?
从上面布局来看,SwipeRefreshLayout只有一个子组件。现在我们来编写Activity:
?
正如你在示例中所看到的,事件发生在
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/20/8ad33214c0a9086b94bcc1b4248b2aa8.png)
这种情况有些复杂,如果我们向上滚动在ListView中项目,一切都如预期那样显示。但如果向下滚动,刷新过程开始列表项并不滚动。在这种情况下,我们可以使用一个小技巧,可以通过
?
正如第33行
原文链接:
javacodegeeks 翻译: 伯乐在线
- alice
译文链接: http://blog.jobbole.com/71023/
SwipeRefreshLayout组件是由SDK提供,已经被用于一些Android自己的应用程序(比如Gmail)的实现。
简介
SwipeRefreshLayout组件只接受一个子组件:即需要刷新的那个组件。它使用一个侦听机制来通知拥有该组件的监听器有刷新事件发生,换句话说我们的Activity必须实现通知的接口。该Activity负责处理事件刷新和刷新相应的视图。一旦监听者接收到该事件,就决定了刷新过程中应处理的地方。如果要展示一个“刷新动画”,它必须调用setRefrshing(true),否则取消动画就调用
setRefreshing(false)。
怎样使用SwipeRefreshLayout
现在我们知道这组件如何工作的,我们将创建一个简单的例子来说明如何使用。假设用户通过使用一个垂直滑动手势来产生一个随机数:![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/20/1b5c6d18da652d509a56a7368f52d674.png)
通常来说这是根组件:
?
?
onCreate方法。在第6行,我们得到SwipeRefreshLayout引用,这样我们就可以设置监听器(10、11、12行)。在监听者这边,我们通过设置
setRefreshing(true)动开启刷新画,然后生成随机数。在结束的时候(这里模拟了一个相当漫长的过程)停止动画。
在ListView上使用SwipeRefreshLayout
另一个有趣的例子是在ListView中如何使用SwipeRefreshLayout。这是一个有趣的例子,因为在真正的应用程序中,我们经常会遇到这种情况。我们有一些带ListView的项目,希望对它们刷新。如果ListView是SwipeRefreshLayout唯一的孩子,不会出现任何问题,一切都会运行正常。在某些情况下,不仅有ListView可能还有其他的元素。假设有这样一个界面:![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/20/8ad33214c0a9086b94bcc1b4248b2aa8.png)
这种情况有些复杂,如果我们向上滚动在ListView中项目,一切都如预期那样显示。但如果向下滚动,刷新过程开始列表项并不滚动。在这种情况下,我们可以使用一个小技巧,可以通过
setEnabled(false)禁止使用刷新通知,当Listview中第一个项可见时而再启用它:
?
public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount)看到的,我们重写了ListView中的onScrollListener去处理启用/禁用机制。
原文链接:
javacodegeeks 翻译: 伯乐在线
- alice
译文链接: http://blog.jobbole.com/71023/
相关文章推荐
- AndroidManifest.xml activity属性设置大全
- Android EditText inputType同时设置textPassword和phone
- Android4.0中控制Toast时间
- Android 4.4前后版本读取图库图片和拍照完美解决方案
- Android 布局 fill_parent、wrap_content和match_parent的区别和作用
- Android属性动画完全解析(上),初识属性动画的基本用法
- Android开源项目收藏
- Android 怎么自定义枚举类型的值
- Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值
- Android添加新版本支持包V7后自定义ActionBar左侧有空白,不能玩全填充问题解决
- VideoView视频播放器的再打开
- Android Map新用法:MapFragment应用
- Android(java)学习笔记104:Map集合的遍历之键找值
- android studio Unable to load class 'org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'
- Activity的四种launchMode
- Android ActionBar背景设置渐变色
- Android Studio安装插件
- GitHub上史上最全的Android开源项目分类汇总
- Android(java)学习笔记103:Map集合的获取功能
- Android中基于Socket方式的文件上传