2.1 專案的整體架構,專案搭建,也叫做 系統設計
一個系統設計的例子:
3DM客戶端系統設計
一、系統設計
1.1、整體架構
3DM客戶端系統按照邏輯劃分,主要分為四層,基礎類庫層,資料層,業務邏輯層,UI展示層。每個層次由不同的模組組成(圖1)。
(圖1)
1.1.1、基礎類庫層
(簡寫)
功能說明:
包含的內容: 網路請求, JSON資料的解析
1.1.1.1、網路請求
選型:
網路請求採用Apache HttpClient 進行網路請求的支援。
對於使用Volley類庫的方式,就可以定義多種Request來完成Volley方式的請求。
採用HttpClient可以更加靈活的定義各種網路介面請求,同時
1.1.1.2、JSON解析
選型:JSON解析需要針對伺服器返回的資料格式進行處理,只要能夠將JSON解析成為物件,並且能夠更新到UI介面即可。經過分析,介面返回的資料無法適應FastJSON/GSON的常用解析方式,
因此最終確定 JSON 解析採用 org.json來進行。
1.1.2、資料層
1.1.2.1、資料實體定義
文字說明和類圖,實際的欄位參考03-伺服器介面文件
每個實體要根據應用的內容來選擇相應的欄位。
1.1.2.2、資料庫表設計
1.1.2.3、資料實體解析方式
1.1.3、業務邏輯層
1.1.3.1
1.1.3.2、請求任務的設計
1.1.4、UI展示層
1.1.4.1、UI整體框架
根據個人的分析與設計,來進行。
不推薦使用 TabActivity了。
1.1.4.2、頂部Banner的設計
迴圈顯示幾張圖片,每一個點選之後,訪問相應的內容。
滑動下面的列表,Banner跟著移動到上面去。
如果採用ListView + Header View的話,onItemClick 如果處理position變化。
1.1.4.3、UI效能的支援
Fragment的 onCreate, onCreateView, onResume 這三個方法對於資料載入的影響
需要進行優化。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
我自己的一些記錄:個人理解
專案第一步:
1: 工具類,網路,支撐
這裡的支撐,可以想象為例如greenDao的generator阿
例如ximalaya的專案:
現在我們先將第三方框架匯入。這個其實是底層需要做的。(這個是第一步)
網路框架-》retrofit,retrofit2:convert-gson:2.0.0-beta3
圖片載入-》fresco,fresco.0.9.0
資料庫框架-》greendao,de.greenrobot:greendao:2.1.0
recyclerView-》com.android.support:recyclerview-v7:23.1.0
design->com.android.support:design:23.1.0
匯入的時候可能需要它下載:
下載後的路勁是類似於:C:\Users\XUE\.gradle\caches\modules-2\files-2.1\com.facebook.fresco\fresco\0.9.0
因為資料庫使用了greendao,所以資料庫需要程式碼生成的。
新建一個model,選擇Java Library,名字和classname 可以預設
Library name->lib
Java class name-> MyClass
然後路勁是在lib 下面的src-----》example下面的
----------------
注意了,如果是因為在同步的時候添加了東西,但是沒有出來效果,例如剛才我在同步時的時候添加了model,但是在專案上面按F4的時候沒有看到lib這個model,
這個時候只要點開右邊的gradle選單,點選上面的重新整理按鈕就好了。
----------------
點選專案,按F4,點選左邊列表的lib,然後新增dependency,(這個也屬於第一步)
選擇de.greenrobot:greendao-generator:2.1.0
因為greendao 需要通過這個generator來生成DAO的檔案。(是DAO檔案嗎?還是什麼檔案?)
專案第二步:
資料結構,解析這個還需要
例如 需要湧動啊什麼entity,例如,使用的是list還是map之類的。
例如ximalaya,我們就需要用到的資料結構是:
那麼現在需要那些實體類呢:
發現的實體類:
熱點圖的實體類
推薦資訊的實體類。
專輯實體類
音訊實體類。
-------------------------
資料庫裡面的實體類一共是5個,
AlbumEntity.java
DiscoverEntity.java
FocusImageEntity.java
RecommendEntity.java
TrackEntity.java
----------
HomeEntity裡面的包含了:
+++++++++++++++++++++++++++++++++++++++++++++
注意了,例項的名字一定要和json裡面的名字一樣,不一樣就不會獲取了。
private DiscoveryColumns discoveryColumns;
private RecommendEntity editorRecommendAlbums;
private HotRecommendEntity hotRecommends;
private FocusImages focusImages;
private BulletArea bulletArea;
+++++++++++++++++++++++++++++++++++++++++++++
專案第三步:
adapter等 例如考慮到databiding的多佈局的adapter,