介紹
- 作爲一個花瓣網用戶實在受不了Android版的崩潰而且已經一年多沒有更新。工作之餘網絡抓包和反編譯,要自己寫一個App,因爲畢竟是別人的項目也不指望能上架,就直接開源放到github上,如果侵權請聯繫我及時刪除。
- 源代碼放在GitHub:項目地址
- 下面介紹目前的工作內容
更新記錄
- 現在兼容包升級導致API-20以下Fresco使用異常,目前已經統一使用CompatUtils工具類,內部使用VectorDrawableCompat獲取VectorDrawable資源,保證低版本的運行。
UI
既然說是Material-Design版,肯定界面效果要足夠MD,眼見爲實。
主界面:瀑布流、下拉自動加載、浮動按鈕、CardView
側滑界面:MD的抽屜式導航
圖片界面:向上滑動隱藏圖片下拉顯示,半透明狀態欄
用戶界面:背景毛玻璃,Tab標籤下可以左右滑動
架構
這個項目在寫在很久之前,當時MVP架構網絡上各種分析描述,但是感覺都是各說各的。不確定項目是否採用MVP架構就先動手寫代碼,隨時準備重構項目。就在不久前Google發佈Android Architecture Blueprints [beta],終於感覺這事有點靠譜了,我現在已經在動手重構項目了。
分析博文在這裏:MVP架構-官方MVP項目和MVP-RxJava項目架構對比分析解讀
目前的架構:
基本思想是採用模板方法模式,父類控制代碼結構,子類實現,部分具有相同功能的再提供父類實現。
例如BaseSwipeViewPagerActivity
是所有具有上拉刷新SwipeRefreshLayout和左右滑動ViewPager的子Activity類的父類。
BaseRecyclerHeadFragment
是所有具有能夠添加頭尾View的RecyclerView的父類Fragment,內部主要實現向下滑動自動加載數據。每個Activity負責邏輯控制,其中會包含都會有一至多個Fragment負責UI顯示,儘可能的不在Activity有網絡操作。
技術點
由於是個人項目所以全部採用目前最新的和最熱門技術。
RxJava
很多基本的邏輯使用RxJava/RxAndroid來實現異步響應,簡化了很多異步回調的代碼。比如歡迎界面的實現,詳解點這裏RxAndroid項目實踐-使用RxJava響應式編碼實現知乎日報的歡迎界面
Retrofit
網絡模塊使用Retrofit,搭配RxJava實在是爽。
同時還很簡潔的實現了Https的網絡訪問。功能強大。Retrofit整體框架主要採用代理模式,使得簡化我們的網絡調用操作,真正的內部還是採用OkHttp,這就導致實現下載上傳進度監聽會有點麻煩。目前也已經實現不會有內存泄露,具體參考看DownloadService.java後臺服務單線程圖片下載實現。
Fresco
圖片加載框架使用的是Fresco,同樣的功能強大,但是使用複雜。我包裝了一個類ImageLoadFresco
,採用生成器模式,配置很多的默認實現,同時能夠實現複雜操作,具體代碼和介紹Fresco的封裝和使用說明以及獲取緩存中的Bitmap對象。
其他
其他方面,每個功能模塊都會提供工具類或者包裝類,分化代碼使得相同功能代碼能夠重用,減少代碼量。