1.描述
经过工作的沉淀,自己一直希望能够按自己的想法,封装一个属于自己的Android开发框架。因为平时工作很忙,所以断断续续地经过了两个月,利用空闲时间,终于完成第一版的开发框架Jokerlibrary。以下是Jokerlibrary的使用说明以及设计思想,我会将其发不到JCenter方便大家引用。框架只是初步搭建,还有很多细节上需要调整,希望大家给意见和建议。
2.介绍
框架的结构设计以mvp模式为基准,类封装为主。以下是框架目录结构。核心部分在http这个文件夹里,里面包含封装好的http访问类。Jokerlibrary底层是基于Retrofit2的二次封装,支持常用get post 请求,支持上传下载文件,加入之前写的
PopularRefreshLayout 兼容性不错的上拉下载组件。
3.思路介绍
1.底层访问网络先初始化一个RetrofitClient单例,所有网络接口调用,都通过该对象实现。
2.定义Retrofit的反射接口类BaseInterface,常用get ,post 有参无参方法,文件上传下载方法
3.定义对外访问网络公用类HttpResquestService,定义post、get 方法,请求参数封装在RequestParam类里面
4.重写refrofit 回调的Callback<ResponseBody> 对应的 onSuccess,onFailure方法,处理接口返回的数据,封装数据,生成对应响应HttpResponse对象。
5.定义BasePresenter基类,继承HttpResquestService,这样,之后的P类只要继承BasePresenter就可以获得访问网络的方法。
4.辅助功能
定义bindViewAClick 方法,根据类view变量名 自动完成初始化对象,减少findbyId编写,并且自动根据注解click设置view 的OnClick事件,减少setClickListener设置。
4.使用方式
1.gradle 引用compile 'com.awarmisland.android:jokerlibrary:2.0.1' ,然后在application中配置jokerlibrary context 和 接口访问基础路径
2.设置present类,定义访问接口方法,初始化RequestParam,构造函数RequestParam(String url,String action) 设置接口路径,对应发起网络标记action
3.通过返回httpResponse action 区分同类发起网络请求,body中返回接口数据
4.view层,通过反射机制,简化view的初始化和设置onClick事件,
(1)继承BaseActivity 只要定义全局变量并且变量名和xml设置view id一致就可以自动完成实例化
(2)通过注释@Click 程序会自动设置view的onClick事件,在继承OnClick事件中 通过View 的id 区分view的点击的点击事件
(3)如果不想写注释,可以通过设置viewId名_onClick 程序会自动findById 并且setOnClick绑定定义的事件,例如如下图所示