【0102】【項目實戰】-【Android通用框架設計與完整電商APP開發】-【1】


 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  彈吐司的測試

【完善類】傳入上下文;

【再測試】彈吐司


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM