超简单!原生SwipeRefreshLayout实现首页下拉刷新
2016-12-19 17:03
393 查看
简介
SwipeRefreshLayout是Google官方推出的一款下拉刷新组件,位于v4兼容包下android.support.v4.widget.SwipeRefreshLayout
这里简单介绍一下它的超简单的用法,因为我比较懒,所以直接上代码了!
布局
布局构造介绍
大概讲一下这个布局构造,直接从项目里贴过来的,主页用DragLayout布局的,由一个主页和一个侧边栏组成xml
<android.support.v4.widget.SwipeRefreshLayoutandroid:id="@+id/main_refresh"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">
<!--Control-->
<com.jty.view.DragLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dl"
android:layout_width="wrap_content"
android:layout_height="match_parent"
>
<!--侧滑-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#eff2f5"
>
</RelativeLayout>
<!--主页-->
<com.jty.view.MyRelativeLayout
android:id="@+id/activity_main"
android:background="@color/main_background"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.jty.view.MyRelativeLayout>
</com.jty.view.DragLayout>
</android.support.v4.widget.SwipeRefreshLayout>
实现逻辑
首先实现监听方法,并且设置监听implements SwipeRefreshLayout.OnRefreshListener /** * Pull To ReFresh */ @BindView(R.id.main_refresh) SwipeRefreshLayout mainRefresh; private boolean isRefresh = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); EventBus.getDefault().register(this); //set refresh listener mainRefresh.setOnRefreshListener(this); isLogin(); }
然后进行写你自己的业务逻辑
重写onRefresh()方法:
/** * Main Pull To Refresh */ @Override public void onRefresh() { //判断刷新状态 if (!isRefresh) { isRefresh = true; //send request getInfo(username, token, ip); } }
在请求完成之后,发送一条请求到主线程:
//send msg to main EventBus.getDefault().post("complete");
主线程处理
这里用的EventBus,可以当Handler用,主线程收到信息之后对状态进度条状态做处理,OK,完成了!
@Subscribe(threadMode = ThreadMode.MAIN) public void MainHandler(String msg) { if(msg.equals("complete")){ //完成请求后隐藏刷新进度条 mainRefresh.setRefreshing(false); isRefresh = false; } }
后记
以上列出的只是SwipeRefreshLayout的一般用法,如果需要自定义的话就相对复杂一点了,可以参考Android官方说明:https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html,真的特别详细!相关文章推荐
- 咋没人提ngx.timer.at这个方法的执行次数呢?
- mysql 根据英文首字母来查询汉字
- Java中为IO流写一个快速关闭流的小工具
- git的使用知识点总结(一)
- ios 从前台返回到回台 从后台返回到前台 或者 支付宝支付订单后 对界面进行操作
- android开发 判断当前手机是否是阿里 yunOS 系统
- python基础知识之成员资格、len函数、max函数、min函数
- 常见问题记载(一)
- Python的输入和输出
- 彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法
- Android之SQLite数据存储
- Android入门级之WebView的使用
- 关于DEX字节码解释的网址
- 【BZOJ 1923】 [Sdoi2010]外星千足虫 高斯消元
- java等比例压缩图片
- HTML5学习随笔02
- redis主从集群搭建及容灾部署(哨兵sentinel)
- 七牛error:incorrect zone, please use up-z1.qiniu.com问题解决
- EC管理智能电池的方案
- 谷歌的前端框架