整體框架設計
層次設計
Data層
數(shù)據(jù)結(jié)構(gòu):
class ImageInfoModel { String imagePath; boolean isSelected; }
獲取系統(tǒng)所有圖片的路徑钳枕,并按照上述結(jié)構(gòu)構(gòu)造基本數(shù)據(jù)因妇。
根據(jù)用戶選擇的路徑獲取指定路徑下所有的圖片數(shù)據(jù)忙厌,并把數(shù)據(jù)交給適配層
Adapter層
根據(jù)控制層提供的數(shù)據(jù)進行UI展現(xiàn)前的數(shù)據(jù)處理,圖片選中狀態(tài)的處理及保存,進行圖片壓縮喇辽,控制選中張數(shù)牡昆,更新發(fā)送按鍵狀態(tài)及選中圖片張數(shù),為圖片預覽提供數(shù)據(jù)掂器。
UI層
展現(xiàn)圖片及選中狀態(tài)亚皂,展現(xiàn)發(fā)送按鍵發(fā)送狀態(tài)及當前選中張數(shù),展現(xiàn)預覽按鍵狀態(tài)
關(guān)鍵點
按路徑獲取圖片
ACTION_PICK
圖片處理
- 圖片壓縮 防止OOM
- 圖片旋轉(zhuǎn) 用戶體驗
圖片預覽
- instanceItem的時候?qū)嵗疘mageView,destroyItem的時候移除ImageView對象并置為null
- 不緩存ViewPager的子ImageView国瓮,否則可能造成OOM
- 及時銷毀子ImageView灭必,加快系統(tǒng)垃圾回收