2019独角兽企业重金招聘Python工程师标准>>>

SwipeRefreshLayout概述

SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果。该控件集成自ViewGroup在support-v4兼容包下,不过我们需要升级supportlibrary的版本到19.1以上。

用户通过手势或者点击某个按钮实现内容视图的刷新,布局里加入SwipeRefreshLayout嵌套一个子视图如ListView、 RecyclerView等,触发刷新会通过OnRefreshListener的onRefresh方法回调,我们在这里执行页面数据的刷新,每次手势 的完成都会执行一次通知,根据滑动距离判断是否需要回调。setRefreshing(false)通过代码直接取消刷新,true则手动设置刷新调出刷 新视图。setEnabled(false)通过boolean控制是否禁用手势刷新 。

基本使用的方法如下:

  1. setOnRefreshListener(OnRefreshListener):添加下拉刷新监听器
  2. setRefreshing(boolean):显示或者隐藏刷新进度条
  3. isRefreshing():检查是否处于刷新状态

使用非常简单,用一个简单案例来介绍SwipeRefreshLayout下拉刷新的功能。

布局文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/v7_refresh"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/back"><android.support.v7.widget.RecyclerViewandroid:id="@+id/v7_recyclerView"android:layout_width="match_parent"android:layout_height="match_parent" /></android.support.v4.widget.SwipeRefreshLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/cardview"app:cardCornerRadius="5dp"app:cardBackgroundColor="@android:color/white"android:layout_margin="5dp"android:layout_height="60dp"android:layout_width="match_parent"><TextViewandroid:id="@+id/menuitem_tv"android:layout_gravity="center"android:text="@string/app_name"android:layout_width="wrap_content"android:layout_height="wrap_content" /></android.support.v7.widget.CardView>

Activity

public class MainActivity extends AppCompatActivity {private SwipeRefreshLayout swipeRefreshLayout;private RecyclerView recyclerView;private List<String> list=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_activity);initView();}private void initView(){swipeRefreshLayout=(SwipeRefreshLayout)findViewById(R.id.v7_refresh);recyclerView=(RecyclerView)findViewById(R.id.v7_recyclerView);//设置下拉圆圈的大小,两个值 LARGE, DEFAULTswipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);// 设定下拉圆圈的背景:默认white// swipeRefreshLayout.setProgressBackgroundColor(android.R.color.white);initData();}private void initData(){bindData();//设置刷新时动画的颜色,可以设置4个swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_light, android.R.color.holo_red_light, android.R.color.holo_orange_light, android.R.color.holo_green_light);swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {@Overridepublic void onRefresh() {Toast.makeText (MainActivity.this,"正在刷新",Toast.LENGTH_LONG).show();// TODO Auto-generated method stubnew Handler().postDelayed(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubToast.makeText (MainActivity.this,"刷新完成",Toast.LENGTH_LONG).show();swipeRefreshLayout.setRefreshing(false);}}, 4000);}});}private void bindData(){list=new ArrayList<>();for(int i=0;i<22;i++){list.add("Item"+(i+1));}recyclerView.setLayoutManager(new LinearLayoutManager(this));recyclerView.setHasFixedSize(true);recyclerView.setItemAnimator(new DefaultItemAnimator());MenuAdapter menuAdapter=new MenuAdapter(this,R.layout.item,list);recyclerView.setAdapter(menuAdapter);menuAdapter.setOnItemClickListener(new CommonRecyclerAdapter.OnItemClickListener() {@Overridepublic void onItemClick(RecyclerView.ViewHolder viewHolder, View view, int position) {Toast.makeText (MainActivity.this, list.get(position),Toast.LENGTH_LONG).show();}});}
}

运行效果如图:

源码点击下载

转载于:https://my.oschina.net/zhangqie/blog/841194

Android之SwipeRefreshLayout下拉刷新组件相关推荐

  1. Google官方下拉刷新组件---SwipeRefreshLayout

    今天在Google+上看到了SwipeRefreshLayout这个名词,遂搜索了下,发现竟然是刚刚google更新sdk新增加的一个widget,于是赶紧抢先体验学习下. SwipeRefreshL ...

  2. android下拉刷新动画效果代码_vue项目实录:下拉刷新组件的开发及slot的使用

    "下拉刷新"和"上滑加载更多"功能在前端.尤其是移动端项目中非常重要,这里笔者由曾经做过的vue项目中的"blink"功能和各位探讨下[下拉 ...

  3. android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法

    Android RecyclerView设置下拉刷新的实现方法 1 集成 SwipeRefreshLayout 1.1 xml布局文件中使用 android:id="@+id/refresh ...

  4. android 设置下拉刷新,Android RecyclerView设置下拉刷新的实现方法

    Android RecyclerView设置下拉刷新的实现方法 1 集成 SwipeRefreshLayout 1.1 xml布局文件中使用 android:id="@+id/refresh ...

  5. swift添加下拉刷新_React Native自定义下拉刷新组件

    React Native 自定义下拉刷新组件 PullToRefresh 针对猴急一些的同学,可以先在这个 Expo网站在线运行下demo看看效果 . 完整的代码,在 Github仓库 . 下拉刷新, ...

  6. Mint-ui中loadmore(上拉加载下拉刷新)组件在ios中滑动会触发点击事件的解决方法...

    bug说明: Mint-ui中loadmore(上拉加载下拉刷新)组件 在 使用fastclick的情况下 ,在ios设备中滑动会触发点击事件: 解决方法: 我是按需引入,去项目中找到loadmore ...

  7. android自带下拉阻尼动画,android 有阻尼下拉刷新列表的实现方法

    本文将会介绍有阻尼下拉刷新列表的实现,先来看看效果预览: 这是下拉状态: 这是下拉松开手指后listView回滚到刷新状态时的样子: 1. 如何调用 虽然效果图看起来样子不太好看,主要是因为那个蓝色的 ...

  8. Flutter RefreshIndicator 下拉刷新组件 Material 风格的刷新效果

    题记 -- 优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力,当然也需要码农年轻灵活的思维. 盘点Flutter跨平台APP开发中使用到的进度条 Flutter是谷歌推出的最新的移动开发 ...

  9. php mescroll,mescroll.js上拉加载下拉刷新组件使用详解

    本文实例为大家分享了上拉加载下拉刷新组件mescroll.js的具体代码,供大家参考,具体内容如下 使用注意事项: 1.引入的时候出问题及时看官方给出的解决方案(基本上都必须看): 2.react中一 ...

最新文章

  1. 独家 | 手把手教你用R语言做回归后的残差分析(附代码)
  2. 转:socket select模型示例
  3. js联动清除的一个想法
  4. HighNewTech之Job:关于人工智能领域专业的公司求职数据分析(最全)
  5. 解决manjaro更新后pacman: error while loading shared libraries
  6. vue点击按钮之后置成不可用_2020.03vue常见问题总结
  7. JavaMail发送简单邮件
  8. 中小企业的软件需求问题
  9. 跟韦老师聊了一个深夜
  10. linux重新启动某一个项目,Linux运维知识之supervisor更改某项目配置后 需要重新启动才有效...
  11. STM32那点事(5)_ADC(下)
  12. 【SpringMVC框架】非注解的处理器映射器和适配器
  13. 数据库连接池配置(案例及排查指南)
  14. CISCO 端口出现err-disabled 现象解决案例
  15. OpenMP对于嵌套循环应该添加多少个parallel for
  16. HFSS19 官方中文教程系列 L06
  17. 利用Bat命令批量修改文件名
  18. 数学函数图像软件-Graph之小技巧
  19. 企业微信双开及三开的方法
  20. LEAK: ByteBuf.release() was not called before it's garbage-collected. Enable advanced leak reporting

热门文章

  1. Java进阶必备,人人都能听懂的JVM
  2. C++进阶教程之模板
  3. Java基础篇之Java线程模型
  4. 简单的三层交换配置路由实验 (思科)
  5. vue2.x 给一个对象里添加一个没有的属性
  6. 《MapReduce 2.0源码分析与编程实战》一1.5 看,大象也会跳舞
  7. use proxy for git
  8. 【原】常见CSS3属性对iosandroidwinphone的支持
  9. Google Protocol Buffer学习笔记(一)
  10. Leetcode 863.二叉树中所有距离为K的结点