Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 仿煎蛋jiandan應用客戶端源碼,煎蛋jiandan

仿煎蛋jiandan應用客戶端源碼,煎蛋jiandan

編輯:關於android開發

仿煎蛋jiandan應用客戶端源碼,煎蛋jiandan


項目源碼下載:

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。原因如下:

  • 推出時間太短,雖然功能強大,但是還沒經過考驗,還不很成熟。Fresco的更新頻率很快,我開始用的時候還是0.1.0版本,後來在加載圖片的時候遇到問題,在這個版本上,Fresco沒有對有304緩存的圖片進行處理,所以在加載這類圖片的時候會出現失敗,我給Fresco項目提交issue之後,他們回復我,Fresco已經升級,在0.2.0完成了問題修復。所以我覺得,Fresco還需要一段時間的考驗和完善,才能被用到生產環境中,現在我不很推薦大家在項目中使用
  • 不支持wrap_content。放棄Fresco的一個很重要的原因就是因為它不支持wrap_content,Fresco只支持match和固定長寬,在這個項目中需要展示大量寬度match,高度不定的圖片,因為Fresco顯示圖片的控件也是自己定制的,所以自定義控件這條路也比較難走,在沒有找到更好的解決方案的情況下,我決定暫時放棄Fresco,改用UIL。在本項目中,只有在評論列表頁的頭像是使用的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,這個大家可以自由選擇。

  • Json
  • Gson
  • Jackson

詳細說明:http://android.662p.com/thread-6263-1-1.html


 

  1. 上一頁:
  2. 下一頁:
Copyright © Android教程網 All Rights Reserved