1.课程计划与效果

1.1 课程介绍

Android 电商加减 安卓电商项目实战_ico

Android 电商加减 安卓电商项目实战_ico_02

Android 电商加减 安卓电商项目实战_初始化_03

Android 电商加减 安卓电商项目实战_Android 电商加减_04

 

 

Android 电商加减 安卓电商项目实战__0005_Android开发_05

 

 

Android 电商加减 安卓电商项目实战_Android 电商加减_06

 

Android 电商加减 安卓电商项目实战_ico_07

Android 电商加减 安卓电商项目实战__0005_Android开发_08

1.2 效果

Android 电商加减 安卓电商项目实战_Android 电商加减_09

Android 电商加减 安卓电商项目实战_ico_10

Android 电商加减 安卓电商项目实战__0005_Android开发_11

Android 电商加减 安卓电商项目实战__0005_Android开发_12

Android 电商加减 安卓电商项目实战_初始化_13

Android 电商加减 安卓电商项目实战_初始化_14

Android 电商加减 安卓电商项目实战_Android 电商加减_15

2.项目架构设计与模块分解

【整体介绍】

 

Android 电商加减 安卓电商项目实战_ico_16

【代码生成器model】

Android 电商加减 安卓电商项目实战__0005_Android开发_17

【核心model】

Android 电商加减 安卓电商项目实战_字体图标_18

【业务model】

Android 电商加减 安卓电商项目实战_初始化_19

【具体项目的model】

Android 电商加减 安卓电商项目实战_Android 电商加减_20

 

Android 电商加减 安卓电商项目实战_ico_21

Android 电商加减 安卓电商项目实战_Android 电商加减_22

3.项目基础骨架搭建

3.1 新建model

【新建项目】

Android 电商加减 安卓电商项目实战_字体图标_23

 

Android 电商加减 安卓电商项目实战_字体图标_24

【修改项目的名字】

 

Android 电商加减 安卓电商项目实战_ico_25

【annimotion的库】:注意一定是java库;

Android 电商加减 安卓电商项目实战_ico_26

Android 电商加减 安卓电商项目实战_Android 电商加减_27

Android 电商加减 安卓电商项目实战_字体图标_28

【compile 编译器的model】也是java库

Android 电商加减 安卓电商项目实战_字体图标_29

【核心model】是android Library

Android 电商加减 安卓电商项目实战_初始化_30

Android 电商加减 安卓电商项目实战_Android 电商加减_31

【电商model】

Android 电商加减 安卓电商项目实战_Android 电商加减_32

Android 电商加减 安卓电商项目实战_字体图标_33

【构建model的目录】

Android 电商加减 安卓电商项目实战_字体图标_34

3.2 【构建model依赖关系】

【核心module】核心库依赖于注解

 

Android 电商加减 安卓电商项目实战_ico_35

Android 电商加减 安卓电商项目实战_初始化_36

Android 电商加减 安卓电商项目实战_Android 电商加减_37

【业务逻辑model】依赖于核心module;

Android 电商加减 安卓电商项目实战_字体图标_38

Android 电商加减 安卓电商项目实战_ico_39

Android 电商加减 安卓电商项目实战__0005_Android开发_40

【项目module】

Android 电商加减 安卓电商项目实战_字体图标_41

【注解指示器的修改】老版的as中建议使用apt,但是现在新版的建议使用annotationProcessor注解器;

Android 电商加减 安卓电商项目实战_ico_42

Android 电商加减 安卓电商项目实战_字体图标_43

3.3【库的移动修改】

【剪切移动】

Android 电商加减 安卓电商项目实战_Android 电商加减_44

【删除】

Android 电商加减 安卓电商项目实战__0005_Android开发_45

【删除】

Android 电商加减 安卓电商项目实战_Android 电商加减_46

4.搭建自己的git代码托管仓库

【使用的是go语言的环境】

【as配置版本控制】

 

Android 电商加减 安卓电商项目实战_字体图标_47

Android 电商加减 安卓电商项目实战_ico_48

Android 电商加减 安卓电商项目实战_初始化_49

【加入到版本控制的范围内】

Android 电商加减 安卓电商项目实战_ico_50

 【提交】

Android 电商加减 安卓电商项目实战_字体图标_51

Android 电商加减 安卓电商项目实战__0005_Android开发_52

Android 电商加减 安卓电商项目实战_Android 电商加减_53

Android 电商加减 安卓电商项目实战__0005_Android开发_54

Android 电商加减 安卓电商项目实战_初始化_55

5.框架主配置入口的设计与实践

 【说明】

【1】只有一个Activity,中间的界面的切换都是使用的fragment,这是经验总结;

【2】使用一个全局的application,管理全局的的重复的工作;

【3】配置的管理:配置的管理和存储和获取;

5.1 配置类的创建

【1】WeakHashMap 列表,资源回收及时,推荐使用; 

【说明】修改之后的为下面使用的HashMap,因为配置会伴随着应用的一直的运行,因此不能使用弱引用回收;

Android 电商加减 安卓电商项目实战_初始化_56

【2】规范:static final 的命名使用大写,并且使用下划线分割;

Android 电商加减 安卓电商项目实战__0005_Android开发_57

【枚举的使用】在应用程序中是唯一的单例,只能被初始化一次,如果是多线程操作,完全可以使用枚举进行安全的惰性的单例的初始化,可以保证线程安全,相当于线程安全的懒汉模式;

Android 电商加减 安卓电商项目实战_字体图标_58

【源码】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】使用静态内部类的单例模式的初始化;

Android 电商加减 安卓电商项目实战_初始化_59

Android 电商加减 安卓电商项目实战_初始化_60

【配置的完善】

Android 电商加减 安卓电商项目实战_Android 电商加减_61

 5.2 初始化app

【将对象的引用保存在配置中并且返回】

 

Android 电商加减 安卓电商项目实战_初始化_62

Android 电商加减 安卓电商项目实战_字体图标_63

Android 电商加减 安卓电商项目实战_ico_64

【配置apihost】

Android 电商加减 安卓电商项目实战_字体图标_65

【检查配置】

 【思想】在写类变量或者方法变量的时候,尽量让变量不可变性达到最大化。如果此变量在后续的代码中不在修改,则使用final修饰;

避免去更改一个本不应该更改的变量。在jvm虚拟机上,或多或少对final变量和public final的修饰会做优化,性能可以得到提升。

不增加final是可以的,但是推荐加上;

 

Android 电商加减 安卓电商项目实战__0005_Android开发_66

Android 电商加减 安卓电商项目实战__0005_Android开发_67

【调用的时机】在应用程序中获取配置的时候调用,如果没有调用Configurator配置一切的方法的时候,就会抛出运行时异常,保证配置的完整性和正确性。

【增加注解】注解的意义:告诉编译系统,这个类型是没有检测过的,可以对该方法不做检查。

 

Android 电商加减 安卓电商项目实战_初始化_68

Android 电商加减 安卓电商项目实战_字体图标_69

5.3 APP对配置的调用

Android 电商加减 安卓电商项目实战_Android 电商加减_70

6.字体图标库集成与封装

6.1 库的添加

【库的地址】https:///JoanZapata/android-iconify

【字体图标库】使用字体来代替很多的图标;可以保证之前的图片的高保真;

 

Android 电商加减 安卓电商项目实战_初始化_71

Android 电商加减 安卓电商项目实战_Android 电商加减_72

Android 电商加减 安卓电商项目实战_ico_73

Android 电商加减 安卓电商项目实战_字体图标_74

6.2 封装

【对该库进行封装】

Android 电商加减 安卓电商项目实战__0005_Android开发_75

【初始化】

Android 电商加减 安卓电商项目实战_初始化_76

【添加自己的字体图标】

Android 电商加减 安卓电商项目实战_ico_77

【APP调用】

Android 电商加减 安卓电商项目实战_ico_78

6.3 使用第三放的ttf图标库

Android 电商加减 安卓电商项目实战__0005_Android开发_79

Android 电商加减 安卓电商项目实战__0005_Android开发_80

 

Android 电商加减 安卓电商项目实战_ico_81

【引入字体库】

Android 电商加减 安卓电商项目实战_Android 电商加减_82

【字体库的获取】

Android 电商加减 安卓电商项目实战_Android 电商加减_83

 

Android 电商加减 安卓电商项目实战__0005_Android开发_84

Android 电商加减 安卓电商项目实战_初始化_85

【调用第三方字体库】

Android 电商加减 安卓电商项目实战_ico_86

 

Android 电商加减 安卓电商项目实战_字体图标_87

【新建枚举类】

Android 电商加减 安卓电商项目实战_ico_88

Android 电商加减 安卓电商项目实战_ico_89

[参考] 采用中划线替换掉了下划线;

1 @Override
2     public String key() {
3         return name().replace('_', '-');
4     }

Android 电商加减 安卓电商项目实战_ico_90

Android 电商加减 安卓电商项目实战_ico_91

【继续处理】可以直接修改为下面的数字的格式,就可以编译通过了:

1     icon_scan('\ue602'),
2     icon_ali_pay('\ue606');

 

Android 电商加减 安卓电商项目实战_字体图标_92

【返回自定的值】

Android 电商加减 安卓电商项目实战_Android 电商加减_93

【调用】

 

Android 电商加减 安卓电商项目实战__0005_Android开发_94

7.基础框架可用性验证

7.1 【测试】显示一个文本

【提供字体的网站】

 

Android 电商加减 安卓电商项目实战_初始化_95

Android 电商加减 安卓电商项目实战_字体图标_96

Android 电商加减 安卓电商项目实战_ico_97

7.2  弹吐司的测试

【完善类】传入上下文;

Android 电商加减 安卓电商项目实战__0005_Android开发_98

【再测试】弹吐司

Android 电商加减 安卓电商项目实战__0005_Android开发_99

Android 电商加减 安卓电商项目实战__0005_Android开发_100