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 彈吐司的測試
【完善類】傳入上下文;
【再測試】彈吐司