android mvp快速开发框架介绍(开始dileber)

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开发了

如下图:

android mvp快速开发框架介绍(开始dileber)_第1张图片

架构如下

建立五个包

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的使用

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






你可能感兴趣的:(mvc,android,安卓,开发框架,mvp)