本框架采用MVP+RxJava + Retrofit+Glide,都是目前最流行的技术,适用中小团队快速进行项目开发, 目录结构清晰易懂,非常适合项目后期管理、迭代、重构等。且看具体介绍:
一、使用技术及特点
开发模式:MVP
网络请求:RxJava+Retrofit
图片加载:Glide
下拉刷新:XRecyclerView
支持带COOKIE网络请求
支持HTTPS访问
支持JSON数据自动解析
支持protobuf数据自动解析
统一错误预处理
多种机型屏幕适配
二、使用说明及范例
1、TheMvp
传统的MVC模式(android应用开发因其结构的特殊性,并不是严格意义上的MVC模式),随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,变得庞大臃肿,以致需求变更改起来尤其费劲,对于动辄几百行乃至上千行代码的activity类,代码可读性随着时间推移逐渐降低,而修改所带来的bug风险与日俱增,在这种情况下,MVP开发模式迅速在android技术圈火爆起来。
MVP模式结构清晰,代码好维护的道理大家都懂,然而事实上不是特大型项目,一般中小型项目很少使用MVP模式,开发一个页面所需要新增的接口,新增的类太多了!!严重影响开发效率。
TheMvp是轻量级MVP方案,使用activity作为presenter,View层分离出去,没有数不清的接口,很适合中小型项目。
2、网络请求RxJava + Retrofit
RxJava的链式访问利落清晰,在页面中进行网络请求所需要做的工作只需两步,
*在接口类中声明接口,如下图
*使用JsonApiWrapper或ProtoApiWrapper调用接口
声明接口
调用接口
其中compose函数中的参数DefaultTransformer是线程切换的实现,之前考虑对线程切换封装在上层,但影响了RxJava的链式调用,故使用compose实现之。
2、图片加载Glide
使用GlideUtil,一行代码显示。
3、下拉刷新XRecyclerView
比起ListView, RecyclerView拥有更多的灵活性,更容易适应多变的需求,而XRecyclerView是基于RecyclerView扩展的库,直接继承于RecyclerView,代码侵入不高,支付宝android客户端也在使用。
为减少重复代码,抽象出BaseListFragment,写列表页时可以直接继承它,并实现如下4个方法,即可完成一个列表页的编写,具体请参考DemoListFragment.java
3、错误预处理
在访问网络接口时,对服务端返回的错误信息有时并不符合需求,ApiException中,可以对返回的错误码进行预处理。
4、新增tab业务模块
新增tab业务模块时,只需add一个即可动态新增,不需改布局文件。
5、目录结构
采用模块化结构区分,所有模块的activity不再放在一个文件夹中,新增模块需求时,新增目录编写,如下:
布局文件也按模块化分类
7、项目代码
欢迎star和fork
项目效果图:
最后,本项目使用到了很多优秀的库和控件,非常感谢 kymjs、stay、hongyang等等这些作者。