弘智APP的readme

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,采用插件式管理)

img

使用说明

1. BaseActivity

所有页面的共同类,所有页面必须继承该类.BaseActivity提供很多扩展设置方法,页面继承后可直接回调.

1.1 title标题的设置

需要你要的页面中include/ltsoft_toolbar,

layout="@layout/ltsoft_toolbar"link
1
2
然后在该页面的onCreate方法中

/**

  • “测试Banner内容显示页”:标题显示的内容;
  • true:是否居中显示,如果为false显示为居左对齐;
  • 除此也可setToolBarTitle(“测试Banner内容显示页”);默认居左显示标题
    */
    setToolBarTitle(“测试Banner内容显示页”, true);
    onstart();//设置是否显示返回按钮,如果不设置则不显示
    1
    2
    3
    4
    5
    6
    7
    8
    9
    另:特殊情况可不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;
1
2
3
4
5
6
7
8
9
10
11
#### 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>
1
2
3
4
5
6
7
8
9
更多内容,请移步
[我的博客--基于Log4J LogBack集成使用详解](https://xinming-liu.github.io/2018/11/09/%E5%9F%BA%E4%BA%8ELog4J-LogBack%E9%9B%86%E6%88%90%E4%BD%BF%E7%94%A8%E8%AF%A6%E8%A7%A3/)
目前项目中的使用: HttpService中对每次的请求都作了记录.及全局的异常捕获
#### 3 HttpService 网络请求的封装及使用
##### 3.1 HttpService对象创建提供了三种方式:
HttpService(Context context) //activity中使用
HttpService(Context context, T mthis) //activity或fragment中使用
HttpService( T mthis) //activity或fragment 或 没有context的类中使用. [注意此时只可以使用
doPostStringNotDialog请求,否则会失败]
1
2
3
4
5
6
7
8
##### 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) { ...
1
#### 4 图片加载框架Glide

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进行判断.