android快速开发框架(MVP+RxJava + Retrofit+Glide)

本框架采用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调用接口

声明接口

《android快速开发框架(MVP+RxJava + Retrofit+Glide)》

调用接口

《android快速开发框架(MVP+RxJava + Retrofit+Glide)》

其中compose函数中的参数DefaultTransformer是线程切换的实现,之前考虑对线程切换封装在上层,但影响了RxJava的链式调用,故使用compose实现之。

2、图片加载Glide

使用GlideUtil,一行代码显示。

《android快速开发框架(MVP+RxJava + Retrofit+Glide)》

3、下拉刷新XRecyclerView

比起ListView, RecyclerView拥有更多的灵活性,更容易适应多变的需求,而XRecyclerView是基于RecyclerView扩展的库,直接继承于RecyclerView,代码侵入不高,支付宝android客户端也在使用。

为减少重复代码,抽象出BaseListFragment,写列表页时可以直接继承它,并实现如下4个方法,即可完成一个列表页的编写,具体请参考DemoListFragment.java

《android快速开发框架(MVP+RxJava + Retrofit+Glide)》

3、错误预处理

《android快速开发框架(MVP+RxJava + Retrofit+Glide)》

在访问网络接口时,对服务端返回的错误信息有时并不符合需求,ApiException中,可以对返回的错误码进行预处理。

4、新增tab业务模块

新增tab业务模块时,只需add一个即可动态新增,不需改布局文件。

《android快速开发框架(MVP+RxJava + Retrofit+Glide)》

5、目录结构

采用模块化结构区分,所有模块的activity不再放在一个文件夹中,新增模块需求时,新增目录编写,如下:

《android快速开发框架(MVP+RxJava + Retrofit+Glide)》

布局文件也按模块化分类

《android快速开发框架(MVP+RxJava + Retrofit+Glide)》

7、项目代码

https://github.com/chengyuchun/androidRapid

欢迎star和fork

另写了一篇详细的框架使用说明:https://www.jianshu.com/p/d3bc38c31fe3,供阅读参考

项目效果图:

《android快速开发框架(MVP+RxJava + Retrofit+Glide)》

最后,本项目使用到了很多优秀的库和控件,非常感谢 kymjsstayhongyang等等这些作者。

    原文作者:成玉春
    原文地址: https://www.jianshu.com/p/075566990e05
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞