1.课程计划与效果
1.1 课程介绍
1.2 效果
2.项目架构设计与模块分解
【整体介绍】
【代码生成器model】
【核心model】
【业务model】
【具体项目的model】
3.项目基础骨架搭建
3.1 新建model
【新建项目】
【修改项目的名字】
【annimotion的库】:注意一定是java库;
【compile 编译器的model】也是java库
【核心model】是android Library
【电商model】
【构建model的目录】
3.2 【构建model依赖关系】
【核心module】核心库依赖于注解
【业务逻辑model】依赖于核心module;
【项目module】
【注解指示器的修改】老版的as中建议使用apt,但是现在新版的建议使用annotationProcessor注解器;
3.3【库的移动修改】
【剪切移动】
【删除】
【删除】
4.搭建自己的git代码托管仓库
【使用的是go语言的环境】
【as配置版本控制】
【加入到版本控制的范围内】
【提交】
5.框架主配置入口的设计与实践
【说明】
【1】只有一个Activity,中间的界面的切换都是使用的fragment,这是经验总结;
【2】使用一个全局的application,管理全局的的重复的工作;
【3】配置的管理:配置的管理和存储和获取;
5.1 配置类的创建
【1】WeakHashMap 列表,资源回收及时,推荐使用;
【说明】修改之后的为下面使用的HashMap,因为配置会伴随着应用的一直的运行,因此不能使用弱引用回收;
【2】规范:static final 的命名使用大写,并且使用下划线分割;
【枚举的使用】在应用程序中是唯一的单例,只能被初始化一次,如果是多线程操作,完全可以使用枚举进行安全的惰性的单例的初始化,可以保证线程安全,相当于线程安全的懒汉模式;
【源码】com.flj.latte.app.ConfigKeys.java
1 package com.flj.latte.app; 2 6 7 public enum ConfigKeys { 8 API_HOST, //配置网络请求的域名 9 APPLICATION_CONTEXT,//全局上下文 10 CONFIG_READY, //初始化控制是否完成 11 ICON, //存储自己的初始化配置 12 LOADER_DELAYED, 13 INTERCEPTOR, 14 WE_CHAT_APP_ID, 15 WE_CHAT_APP_SECRET, 16 ACTIVITY, 17 HANDLER, 18 JAVASCRIPT_INTERFACE 19 }
【关于单例模式的说明】
【1】如果使用懒汉模式,就是用双重校验锁,sychronized的关键字,防止线程冲突;在多线程开发的实际项目中一般写的都是有问题的;
【2】使用枚举类统一的初始化
【3】使用静态内部类的单例模式的初始化;
【配置的完善】
5.2 初始化app
【将对象的引用保存在配置中并且返回】
【配置apihost】
【检查配置】
【思想】在写类变量或者方法变量的时候,尽量让变量不可变性达到最大化。如果此变量在后续的代码中不在修改,则使用final修饰;
最大限度的避免去更改一个本不应该更改的变量。在jvm虚拟机上,或多或少对final变量和public final的修饰会做优化,性能可以得到提升。
不增加final是可以的,但是推荐加上;
【调用的时机】在应用程序中获取配置的时候调用,如果没有调用Configurator配置一切的方法的时候,就会抛出运行时异常,保证配置的完整性和正确性。
【增加注解】注解的意义:告诉编译系统,这个类型是没有检测过的,可以对该方法不做检查。
5.3 APP对配置的调用
6.字体图标库集成与封装
6.1 库的添加
【库的地址】https://github.com/JoanZapata/android-iconify
【字体图标库】使用字体来代替很多的图标;可以保证之前的图片的高保真;
6.2 封装
【对该库进行封装】
【初始化】
【添加自己的字体图标】
【APP调用】
6.3 使用第三放的ttf图标库
【引入字体库】
【字体库的获取】
【调用第三方字体库】
【新建枚举类】
[参考] 采用中划线替换掉了下划线;
1 @Override 2 public String key() { 3 return name().replace('_', '-'); 4 }
【继续处理】可以直接修改为下面的数字的格式,就可以编译通过了:
1 icon_scan('\ue602'), 2 icon_ali_pay('\ue606');
【返回自定的值】
【调用】
7.基础框架可用性验证
7.1 【测试】显示一个文本
【提供字体的网站】
7.2 弹吐司的测试
【完善类】传入上下文;
【再测试】弹吐司