一款MVVM設計模式的Gank客戶端

為什么寫這個客戶端?

我學習android也有一年多了,都說項目才是檢驗自己學習成果的最好方式,正好最近學習Material Design, RxJava & Retrofit框架和MVVM設計架構也有一段時間了,正好,網絡上有gank.io這個免費接口,雖然已經有不少人寫過這個客戶端,但是沒有一個是用MVVM設計架構的,于是我便寫了這個項目。這個項目是我的第一個上線項目,可以 查看圖片,視頻,技術文章等,支持收藏,搜索等 ,界面是仿網易云音樂,用戶可以選擇觀看模式和搖一搖模式,界面簡潔大方,操作簡單易懂。到現在,這是第一個也是唯一一個使用MVVM設計架構的Gank.io客戶端,想想還是挺有成就感的。

這個項目用了什么?

項目使用了Material Design, RxJava & Retrofit框架和MVVM設計模式,圖標是使用svg和icon.用的都是最新的東西。圖片的加載是用picasso,顯示是使用RecyclerView,控件用的幾乎都是Material Design,并且遵從Material Design規格要求,使得整個界面看起來很有Material Design風格,頁面架構采用的是少activity多fragment,減少資源的消耗和更快的響應頁面間切換和交互,使得用戶體驗更好。

為什么用這些?

關于這個問題,我先回答我特別喜歡RxJava和MVVM,先說RxJava,這個其實主要是為了解決異步問題,特別是對handler厭煩的人而言,RxJava的出現實在是太及時了,RxJava不算一種框架,它不能拿來就使用,但是它特別好,因為它所實現的大概就是,你輸入一個東西,然后輸出你想要的東西,這么說可能很寬泛,舉個例子,比如在這個項目中,你的輸入是通過Retrofit得到的數據,而這個數據是一個類,但是你只想要其中的url,怎么辦?RxJava就可以,你只需要使用map操作符就可以(當然在這個項目中我沒有這么寫,因為我不只是想得到url),而使用Retrofit就是因為它對RxJava進行了很好的支持,當然,它本身也很方便。然后就是MVVM了,這個框架也出現一陣子了,對于使用這個框架,就不得不介紹 Data Binding Library 這個庫了,這個庫和mvvm一起使用,簡直爽的不行, Data Binding Library 這個庫能讓你在xml中進行數據綁定,在沒有使用這個庫之前,每次我們寫xml都只是為了加載一個布局,除了這個功能,xml幾乎沒有別的作用,這樣就讓代碼變得復雜、繁瑣。那么如何使用這個庫呢?我的建議是去 官網 ,當然至于如何KX上網,我就不說了,畢竟僧多肉少(#陰險),如果不會KX上網或者不想看英文的同學,這里我推薦去看簡書。 而對于為什么 Material Design ,只能說,誰用誰知道,畢竟是官方的東西。

你能從這個項目中學到什么?

1. RxJava和Retrofit結合進行網絡請求 ,以及如何將請求 和ProgressDialog結合, 也就是展示網絡請求的過程。

2.如何更好的在項目中使用 Data Binding Library這個庫來實現MVVM 設計架構。

3.如何實現 少Activity多Fragment頁面架構 ,以及如何在一個Fragment中更好的嵌套另一個Fragment。

4.在 Viewpager 下更好的使用 Fragment ,以及多重ViewPager嵌套下,各個Fragment的處理方式,幾乎 涵蓋了Fragment的各種使用方式以及和activity交互方式 ,比如,優雅的控制讓Fragment自己決定處理返回事件還是讓 activit y來處理。

5. 一些簡單的自定義View ,比如自定義Edittext實現帶有清除效果的搜索框。

6. Material Design庫中絕大部分控件的使用 ,遵從Material Design規格要求,使得整個界面看起來很有Material Design風格。

7.如何讓 RecyclerView和Data Binding Library 更好的結合。

8.如何更好的封裝程序以及繼承,讓業務層和邏輯層更好的分離。

9.這個項目用的都是最新最火的框架和設計模式,所以你以后肯定會用到,而且在很長的時間里都不會有"過期"這一說(當然,知識是沒有過期這一說法的,原諒我語文不好)。

10.我現在大四,也就意味著我有很多自由的時間,如果你在看我項目的時候遇到任何問題都可以和我聯系,我會盡快給你回復,而且由于我技術比較菜(#謙虛),所以沒有專家盲點(指對一個事務知道的越多,就越發不記得"不知道這個事"的情形),也就能更好的回答你們的問題(第一次將自己技術菜說的這么清新脫俗#害羞)。

 

 

 

來自:http://www.jianshu.com/p/7574ae0d7b36

 

 本文由用戶 DusNugent 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!