編輯:關於android開發
項目源碼下載:
http://code.662p.com/view/10654.html
效果圖
<ignore_js_op>
<ignore_js_op>
項目整體介紹
從上面的效果圖也可以看出來,我們使用的是Material Design風格,但是並不純正,為了兼容4.x版本,我們使用Theme.AppCampat兼容主題、RecycleView和CardView來完成,從整體視覺效果來看比較統一和美觀。同時為了整體的效果,使用開源項目material-Dialogs來實現Material Design效果的對話框,這個在點擊回復,完善個人信息的功能點上有所體現。
除了界面,網絡請求框架我選擇的是Volley,原因是Volley對小數據量、請求頻繁的網絡操作進行了優化,對於這個項目比較合適,而且作為Google的推薦項目,現在已經完善的比較成熟了,經過了很多項目的實戰驗證,所以比較放心。而且擴展性非常強,可以定制我們自己的請求解析需求,這一點相信看過我項目的朋友,應該有所感受,在com.socks.jiandan.net包下的請求類都經過了我的定制,使用方便。而且很重要的一點是,Volley在2.3之後是基於HttpURLConnection的封裝實現,默認支持gzip壓縮,在4.0之後的版本,還支持結果緩存,所以在性能和數據傳輸量上,相比HttpClient有很大的提高。
在本項目中一個很重要的功能就是加載圖片,所以在圖片加載框架上需要特別注意。最初我選擇的圖片加載框架是Fresco,因為之前翻譯過關於Fresco的特性的文章,感覺非常的強大,所以想試一試。但是在後面使用的時候,還是遇到了很多的問題,讓我不得不暫時放棄Fresco,改用UIL。原因如下:
在IOC框架的選擇上,使用butter knife,之前一直使用AFinal,但是AFinal屬於運行期綁定,會影響性能,butter knife屬於編譯期綁定,不會影響。使用butter knife使用非常方便,就拿來一用。在本項目中,我感覺其實並不是很需要IOC,僅作一個嘗試而已,不必深究。
在完成網絡狀態切換的功能上,需要在MainActivity注冊一個網絡狀態監聽器,當網絡狀態發生改變的時候,通知當前顯示的Fragment切換圖片的加載模式,或者是提示網絡狀態變化情況。在這種需求下,使用接口是可以完成的,每個Fragment都實現MainActivity的一個接口,當網絡狀態發生變化的時候,MainActivity調用Fragment的接口方法即可。但是這樣不僅很麻煩,而且會增加耦合性,為此,我使用EventBus完成了這個功能,實現很簡單,大家看源碼就可以,耦合度為0。
這個項目中的所有數據接口基本都是Json格式,所以選擇一個好的解析框架是很重要的。我之前寫過三篇文章介紹了Json的不同解析方法,雖然Jackson的解析速度快,但是gson確實用起來很熟悉,而且我們要解析的數據量並不大,性能上的差異微乎其微,所以我選擇了我比較熟悉的gson。在解析的一些地方還用到了一些JSON,這個大家可以自由選擇。
詳細說明:http://android.662p.com/thread-6263-1-1.html
Android筆記——Button點擊事件幾種寫法,androidbuttonButton點擊事件:大概可以分為以下幾種: 首先我們簡單地定義一個帶But
Android 手機衛士--導航界面3、4和功能列表界面跳轉邏輯處理,android4和剛剛花了一點時間,將導航界面3、4的布局和相應的跳轉邏輯寫了一下: Setup3
android:異步任務asyncTask介紹及異步任務下載圖片(帶進度條) 為什麼要用異步任務? 在android中只有在主線程才能對ui進行更新操作,而其它線程不
在Android中用Kotlin的Anko運行後台任務(KAD 09),kotlinanko作者:Antonio Leiva 時間:Jan 19, 2017 原文鏈接:h