個人項目-Material-Design版花瓣網圖片App

介紹

  • 作爲一個花瓣網用戶實在受不了Android版的崩潰而且已經一年多沒有更新。工作之餘網絡抓包和反編譯,要自己寫一個App,因爲畢竟是別人的項目也不指望能上架,就直接開源放到github上,如果侵權請聯繫我及時刪除。
  • 源代碼放在GitHub:項目地址
  • 下面介紹目前的工作內容

更新記錄

UI

既然說是Material-Design版,肯定界面效果要足夠MD,眼見爲實。
主界面:瀑布流、下拉自動加載、浮動按鈕、CardView
Main

側滑界面:MD的抽屜式導航
Drawer

圖片界面:向上滑動隱藏圖片下拉顯示,半透明狀態欄
Image

用戶界面:背景毛玻璃,Tab標籤下可以左右滑動
User

架構

這個項目在寫在很久之前,當時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對象

其他

其他方面,每個功能模塊都會提供工具類或者包裝類,分化代碼使得相同功能代碼能夠重用,減少代碼量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章