android mvp框架:dileber(https://github.com/dileber/dileber.git

官方交流qq群:171443726

我个人qq:297165331~~有什么问题也可以咨询~~

公司网站:北京清华源码空间


接着上一篇的简介继续讲:

要使用这套框架首先需要在AndroidMainfest.xml添加权限

<!--联网权限--> <uses-permission android:name="android.permission.INTERNET" /><!--往sdcard中写入数据的权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!--在sdcard中创建/删除文件的权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
其次要建立一个Application继承于SApplication

public class SmailApplication extends SApplication{    @Override    public void onCreate() {        super.onCreate();        buglog(Configer.BUG_STATIC,Configer.BUG_NAME);    }}
如上buglog是一个日志打印工具,后面会仔细讲解

然后在application 中将name指向刚才继承的类

<application        android:name=".app.SmailApplication"        android:label="@string/app_name"        android:icon="@drawable/ic_launcher">
现在基本的设置就好了

然后就可以进行MVP开发了

如下图:


架构如下

建立五个包

app 基本包,包含设置,application

delegate 委托view层 ,包含所有界面的所有delegate,和相关的view接口

model 模型类 ,包含网络请求的 model

presenter 处理model和view

scm 处理网络数据,包括网络回调类


下面开始正式谈论框架的使用了

首先

先介绍一下我封装后的日志类

日志类的简介,后序会有详细介绍

框架中封装了android的log类。

如果你想改log打印名字的话,或者关闭log,需要在你继承的application的oncreate方法中写下如下

 buglog(true,“tag”);

第一个参数是是否关闭 信息打印 ,如果填写false的话是关闭,true不关闭 默认不关闭

后面则是log的名字

如何使用log类

要打印的数据用逗号分开,该日志打印类还可以将你的行号和类打印出来。

如下

SLog.i("info",error.getMessage(),"dddddd","dsdsdsds");

打印效果如下
com.zhonghua.smailadd I/smailapp﹕ info {"error_code":10001,"reason":"错误的请求KEY"} dddddd dsdsdsds [ threadID=1,threadName=main,fileName=SplashActivity.java,className=com.zhonghua.smailadd.presenter.SplashActivity$1,methodName=success,lineNumber=39 ]
答应info信息
SLog.i("info",error.getMessage());
打印错误信息
SLog.e("ERROR_MESSAGE",error.getMessage());
打印警告信息
SLog.w("w",error.getMessage());

其次介绍一下如何网络请求

这是我封装了volley后的网络请求

首先要在继承scm

public class GoodsListScm extends Scm {

继承scm后的子类就有网络请求的能力了

如下图获取数据

public void getGoodsList(String search, Integer order, Integer orderType, Double lat, Double lon, final OnGoodsListListener onGoodslistListener) {    onGoodslistListener.before();    Map<String,Object> map = new HashMap<String,Object>();    netWork("http://api.avatardata.cn/Constellation/Query", map, GoodsModel.class, new HttpListener<GoodsModel>(){        @Override        protected void onSuccess(GoodsModel response) {            onGoodslistListener.success(response);        }        @Override        protected void onFailure(VolleyError error) {            SLog.e("ERROR_MESSAGE",error.getMessage());            onGoodslistListener.failed();        }    } , TYPE_POST);}

请注意如下实现

netWork("http://api.avatardata.cn/Constellation/Query", map, GoodsModel.class, new HttpListener<GoodsModel>(){
network中是目前可以传入model和string的

map目前只支持int string ,double 等基本类型后序我会继续添加的

请求的类型有两种

TYPE_POST    TYPE_GET

你需要建立一个回调函数来将数据传回view

如果数据简单的话直接使用

INetListener

就可以完成数据的接收

继承的使用如下

public interface OnGoodsListListener<T> extends INetListener<T>{}
里面可以写你自己的接口

在view端的接收数据如下

GoodsListScm goodsListScm = new GoodsListScm();goodsListScm.getGoodsList(null, null, null, null, null, new OnGoodsListListener<GoodsModel>() {    @Override    public void before() {        viewDelegate.loading();    }    @Override    public void success(GoodsModel model) {        String ss = HJson.toJson(model);        SLog.i(">>>>>>",ss);        viewDelegate.loadDialogDismiss();    }    @Override    public void failed() {        viewDelegate.loadDialogDismiss();    }});



图片的网络请求,默认的缓存到一个目录下,后期我回开放缓存的接口会让大家自己缓存自己的地方

如何请求图片

如下

netWorkForImage(imageView,"https://c1.staticflickr.com/8/7516/16112631626_91e4c54e1e_n.jpg",R.drawable.splash);
imageview是你的view 后面的参数是网址和 未请求到图片时显示的默认图片


网络请求讲完了,下一篇我则重点讲 presenter 和 delegate的使用

后续的文章还会讲到框架中的一些特殊工具






更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. Android(安卓)FrameWork——Binder机制详解(1)
  4. Android(安卓)操作蓝牙Ble时数据转换的常用方法
  5. Android数据存储方式之:ContentProvider
  6. Android(安卓)ContentProvider的实现及简单实例代码
  7. 自定义Logcat,完全控制打印信息
  8. android AsyncTask相关的一些面试题目
  9. Android(安卓)Retrofit2&OkHttp3添加统一的请求头Header

随机推荐

  1. 详解Android(安卓)TableLayout中stretchC
  2. Android读写XML(下)——创建XML文档
  3. android面试题大全 android面试题总结
  4. Unable to resolve target 'android-18'
  5. Android(安卓)ApiDemos示例解析(5):App->
  6. Google I/O 2017 Android
  7. Android-View-Attribute
  8. Android电池电量检测
  9. Android之IPC2————AIDL
  10. [Android] 切换语言后避免Activity重启方