【0082】【项目实战】-【智慧北京】-【04】【整个项目的UI框架】-【自定义下拉刷新】-【XUtils细节补充】

1.整个项目的UI框架

【点评】此UI框架已经是属于比较复杂的框架了,深入了6层框架;在工作很实用;

2.自定义下拉刷新

2.1 头布局文件

【说明】因为下拉刷新的图片和progressBar旋转圈重合,因此使用帧布局;

【文字的添加】

 【progressBar的隐藏】此处使用的invisible,需要占位;如果是gone,消失之后,再次加载出现的时候旁边的线性布局的位置会出现短暂的加载错位,影响用户的体验;

2.2 加载自定义控件

【添加头布局】自定义控件;

 

【头布局添加的顺序】首先在new下拉刷新PullToRefreshListView按钮的时候,已经初始化好了下拉刷新的listView控件;

 然后再此处添加新闻头条头布局,在添加下面的新闻栏中的内容;

因此:下拉刷新头布局在先;

【隐藏头布局】

 

2.3 执行下拉动作

 

2.4 根据下拉的位置进行操作

【下拉刷新的方法】

【文字的改变】

【箭头的动画】

 

 

【效果】下拉文字进行了改变(下拉刷新变为了松开刷新),箭头进行180度的转变;

2.5 根据刷新状态进行头部位置的确定

 

【进度条改变的增加】

 

【效果】存在bug,直接上来就是progressBar在转动;

【原因及改正】丢了break关键字;

 

【完整效果】

【bug】正在刷新的时候,即使触摸屏幕滑动,仍然保持正在刷新的状态;

2.6 新闻内容的真正刷新-使用回调

 【说明】PullToRefreshListView委托TabDetailPager进行新闻内容的更新;

   回调----回调--回调

【委托方】PullToRefreshListView

【被委托方】TabDetailPager 数据的刷新就是直接读取服务器中的数据即可;

 

2.7 刷新之后收起控件

【收起控件的时机】在服务器的获取结束之后可以收起下拉刷新的控件;

【说明】成功和失败都得进行控件的收起;

2.8 下拉刷新更新时间

 【细节问题】刷新失败则无需更新时间;

【效果】在服务器关闭之后,下拉刷新一直刷新不动,最后超时了;超时之后的时间没有改变;

如果想要在后期保存此时间,可以保存在sp中;具体看需求;

 3.XUtils细节补充

【XUtils】在网络数据更新的时候不能在主线程中,需要在子线程中;但是,XUtils中已经开辟了子线程,无需要再次开辟子线程;

 

posted @ 2018-03-01 13:40  OzTaking  阅读(154)  评论(0)    收藏  举报