【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中已经开辟了子线程,无需要再次开辟子线程;
浙公网安备 33010602011771号