APPdemo
项目介绍
目前这个套代码,参考项目架构.使用原来的qdhz lib库.(目前来看似乎并不是很适合,需要以后做删除工作重新整理)
整体架构的思路是,以qdhz lib为基础工具lib.不牵扯任何业务功能,服务与现有业务功能在app model中实现.
app作为主要业务功能实现.
软件架构
软件架构说明,开发采用MVP开发架构模式.
- Activity 页面实现在activit中设置.包括view的setValue及setListener.需要继承baseactivity 实现activityView
- activityView 接口实现类,用于Presenter的结果回调.
- activityPresenter 接口实现类,用于业务接口的回调
- activityPresenterImpl 业务逻辑的实现,比如:网络获取数据,复杂逻辑的判断.实现 activityPresenter.
基础模块基础类放到qdhz里面,业务放到APP中,app中还包括业务的基础模块,比如登录等.
(后期每个业务模块如果过于复杂可以,将每个业务模块单独拿出来分成modle,采用插件式管理)
使用说明
1. BaseActivity
所有页面的共同类,所有页面必须继承该类.BaseActivity提供很多扩展设置方法,页面继承后可直接回调.
1.1 title标题的设置
需要你要的页面中include/ltsoft_toolbar,
/**
- “测试Banner内容显示页”:标题显示的内容;
- true:是否居中显示,如果为false显示为居左对齐;
- 除此也可setToolBarTitle(“测试Banner内容显示页”);默认居左显示标题
*/
setToolBarTitle(“测试Banner内容显示页”, true);
onstart();//设置是否显示返回按钮,如果不设置则不显示123456789另:特殊情况可不inclode,自定义title,则不必设置setToolBarTitle 及 onstart.##### 1.2 集成BaseActivity可以随意使用baseactivity中的方法.* notifyVibrator 震动* notifyRing 提示声音* setSteepStatusBar 是否设置沉浸状态栏* setAllowFullScreen 是否允许全屏* setScreenRoate 是否禁止旋转屏幕* onNetChange 网络状态监听
/**
* 没有连接网络
*/
public static final int NETWORK_NONE = -1;
/**
* 移动网络
*/
public static final int NETWORK_MOBILE = 0;
/**
* 无线网络
*/
public static final int NETWORK_WIFI = 1;
/**
* 无线 移动网络 同时存在
*/
public static final int NETWORK_WIFI_MOBILE = 2;
1234567891011
#### 2 Log使用##### 2.1 LogUtils 使用logutils的目的,在正式发版时可以快速关闭log的输出只需修改下配置为false即可,避免发版时去一个个找log输出位置关闭. 简单临时log可使用logutils.比如功能验证等重要log采用logback记录.##### 2.2 LogBack(基于log4j) logBack目的是记录log并打印log,对log的进一步封装,建议所有log统一使用logback,目前logback已经集成到qdhz lib 下修改配置可以在 lib下的assets/logback.xml 中修改. 目前只声明了两个crash 和 http
<logger name="crash">
<appender-ref ref="BASE_ROLL_FILE" />
</logger>
<logger name="http">
<appender-ref ref="BASE_HTTP_FILE" />
</logger>
|
|
HttpService(Context context) //activity中使用
HttpService(Context context, T mthis) //activity或fragment中使用
HttpService( T mthis) //activity或fragment 或 没有context的类中使用. [注意此时只可以使用
doPostStringNotDialog请求,否则会失败]
12345678
##### 3.2 其次Uil中的ip采用静态对象存储使用时需要new UrlUtils();##### 3.3 获取请求结果要想获取结果需要将 T 类implements IAppCallBack 并实现他的onSuccess,onFailure方法.一个页面有多个请求可根据fucName区分哪个请求的结果* 注:fucName因为都是在本页面中传入获取,不建议放到全局静态变量中.(fucName建议使用通俗易的命名,或直接使用中文命名)##### 3.4 请求
/**
* POST请求通用方法
*
* @param uri 请求地址
* @param operStr 操作字符串
* @param jsonStr 请求参数json
*/
public void doPostString(String uri, final String operStr, String jsonStr){
...
/**
* POST请求无dialog提示方法
*
* @param uri 请求地址
* @param operStr 操作字符串
* @param jsonStr 请求参数json
*/
public void doPostStringNotDialog(String uri, final String operStr, String jsonStr) {
...
|
|
Glide.with(getContext())
.load(mUrlUtils.HTTP_HEAD + model.get(finalJ).getIcon())//设置uil地址
.placeholder(R.mipmap.ic_item_more_round)//默认显示图片
.error(R.mipmap.ic_item_more_round)//报错显示图片
.override(100, 100)//设置图片大小
.diskCacheStrategy(DiskCacheStrategy.NONE)//设置缓存模式
.into(childAt2);//设置给要显示的View
```
参考 图片加载框架之Glide
(待续…)
注意事项
1. 原材料出库/入库 输入view必须设置id
页面中的调用手机摄像头的扫描输入功能,是通过获取屏幕焦点view,然后将结果赋值的方式实现的.
所有获取焦点view需要先获取view的id,然后在onActivityResult中获取要显示的id然后给他设置.
如果有特殊业务需求,比如我扫完条码然后需要用这个条码去验证.可根据这个id进行判断.