前言
上一篇文章我大概罗列组件化初期碰到的一些问题,主要为组件化文件冲突,组件之间跳转,组件之间传值等问题,而我也一一对这些做了说明和示例。这里就不在重复了,今天这一篇文章主要是对前几篇文章的总结,以及对组件化的实践,简单封装一些常用工具,然后集成调用等。
baseUtils模块
我们新建一个library,取名为baseutils,主要作用是封装一些常用的第三方控件等,如Toast,Log,等
首先我们先来封装Log日志类,因为代码中注释写的比较清楚,我就不在重复写了,这里我们我主要说下BaseConstant,这个类是我在myfirstmodule里提取的常量类,主要是一些常量的声明,并没有实际逻辑功能
private static LogUtil logUtil;
private BaseConstant baseConstant = new BaseConstant();
/**
* 获取logutils实例
*
* @return
*/
public static LogUtil getLogUtil() {
if (logUtil == null) {
logUtil = new LogUtil();
}
return logUtil;
}
/**
* info日志
*
* @param calssName
* @param message
*/
public void printLogI(String calssName, String message) {
Log.i(baseConstant.TAGI + calssName, message);
}
/**
* debug日志
*
* @param calssName
* @param message
*/
public void printLogD(String calssName, String message) {
Log.d(baseConstant.TAGD + calssName, message);
}
/**
* error日志
*
* @param calssName
* @param message
*/
public void printLogE(String calssName, String message) {
Log.e(baseConstant.TAGE + calssName, message);
}
在主程序中引用,看看是否能成功打印
logUtil.printLogD("testT" + getClass().getName(), "我是测试Debug");
logUtil.printLogI("testT" + getClass().getName(), "我是测试Info");
logUtil.printLogE("testT" + getClass().getName(), "我是测试Error");
在封装一个常用工具类,类似这样
private static CommonUtil commonUtil;
private static Context mContext;
public static CommonUtil getCommonUtil(Context context) {
if (commonUtil == null) {
commonUtil = new CommonUtil();
}
mContext = context;
return commonUtil;
}
/**
* dp转px
*
* @param dp
* @return
*/
public int dp2px(int dp) {
float scale = mContext.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
/**
* px转dp
*
* @param px
* @return
*/
public int px2dp(int px) {
float scale = mContext.getResources().getDisplayMetrics().density;
return (int) (px / scale + 0.5f);
}
/**
* sp转px
*
* @param sp
* @return
*/
public int sp2px(int sp) {
float fontScale = mContext.getResources().getDisplayMetrics().scaledDensity;
return (int) (sp * fontScale + 0.5f);
}
/**
* px转sp
*
* @param px
* @return
*/
public int px2sp(int px) {
float fontScale = mContext.getResources().getDisplayMetrics().scaledDensity;
return (int) (px / fontScale + 0.5f);
}
/**
* 获取app版本
*
* @return
*/
public String getAppVersion() {
try {
return mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
return "暂无版本信息";
}
}
/**
* 获取当前系统版本
*/
public int getOSVersion() {
return Build.VERSION.SDK_INT;
}
/**
* 获取当前手机厂商
*/
public String getPhoneManufacturers() {
return Build.MANUFACTURER;
}
/**
* 获取手机型号
*
* @return
*/
public String getPhoneModel() {
return Build.MODEL;
}
networkUtils网络工具类
网络请求是App开发的重要组成部分,而一个好的网络请求框架会让一个开发者效率事半功倍,因为是做示例,我也就简单封装写了一下,主要用到的是refitro2+rxjava+okhttp,大多数东西还是复制我以前封装的框架,简单兼容了Https和对拦截器做了一点修改,因为都是常见的东西我就不一一说明了,前面文章也提到过如何使用。大概类目如下
还是主项目兼容测试
还是以玩安卓接口做测试,测试可用