智慧北京04_自定义下拉刷新

1,自定义下拉刷新-添加头布局网络

参考ui异步

 

1.1,下拉刷新其实是一个View,添加到ListView头布局上的控件布局

  建立对应的布局文件动画

1.2,建立一个自定义控件PullToRefreshListViewui

建立方法initHeaderView()//初始化头布局控件spa

注意:头布局的添加顺序:先添加的在上面线程

1.3,隐藏头布局3d

设置头布局的padding为自身的(-高度)blog

获取高度的时候,记得先手动测量一下接口

1.4,拉出头布局

 

 

重写触摸事件,记录按下的位置(downX),和移动的位置,二者相减

可是这里要注意,ViewPager头条新闻可能会消费掉按下的位置,致使按下的位置(downX)没有赋值,因此在移动的事件判断中(要给downX从新赋值)

 

下拉的时候,判断若是是一个条目,或移动的值为正数才能拉出头布局

 

而后动态的修改padding(移动的值 - 高度);

 

1.5 头布局状态切换

定义一个枚举表示这三个状态

下拉刷新:

默认状态,padding 小于0的时候显示,而且当前不处于正在刷新

松开刷新

padding大于0,而且上一个状态处于下拉刷新进入

正在刷新

松开事件中,若是处于松开刷新时进入.

 

定义一个方法,当状态发生改变的时候调用

观察可知,状态文字,时间,箭头发生了改变

箭头动画由↓逆时针180度↑,记得保持最后的状态

 

当松手以后,若是为刷新状态:修改头布局padding0,完整展现,显示进度条,隐藏箭头(记得把动画清理掉,不然不能隐藏)不然隐藏头布局

 

细节:若是处于正在刷新,再次拖拽的时候不该该进入判断,break跳出循环

 

1.6 接口回调

哪里须要通知调用者,就在哪里进行调用接口方法

要提供一个方法给外界设置回调监听器

 

调用者在回调的方法里再次访问网络解析数据

 

自定义控件中提供一个方法,让调用者调用

同时调用自定义控件的方法,告诉自定义控件刷新结束了(网络请求失败的时候也要调用一下)

 

1.7 时间更新

建立一个设置时间的方法,让调用者调用(不在自定义控件中更新,是由于网络请求可能失败,失败的话,是不须要更新时间的,)

固然,也能够写在刷新的方法里,传递一个参数进来,判断是否成功请求网络

MM月 若是是小写 就是从0开始的

HH 小时 24进制,hh 12进制

 

初次显示的时间,能够按需求来,是否须要保存在本地(只显示成功请求的时间之类的)

 

1.8 Xutils细节补充

Xutils访问网络不须要建立子线程,由于它底层用的是AsyncTask

Xutils的回调方法里能够更新ui,由于回调方法其实是在handler里进行的,已经在主线程中运行了.就不用担忧更新ui的问题.底层是异步的

相关文章
相关标签/搜索