带你走进组件化(四)—— 通幽

前言
上一篇文章我大概罗列组件化初期碰到的一些问题,主要为组件化文件冲突,组件之间跳转,组件之间传值等问题,而我也一一对这些做了说明和示例。这里就不在重复了,今天这一篇文章主要是对前几篇文章的总结,以及对组件化的实践,简单封装一些常用工具,然后集成调用等。

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和对拦截器做了一点修改,因为都是常见的东西我就不一一说明了,前面文章也提到过如何使用。大概类目如下

network请求框架类目还是主项目兼容测试
还是以玩安卓接口做测试,测试可用
网络请求测试

项目地址:Github下载 CSDN

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值