Android開發必備庫

UniversalImageLoader

Android SDK的特點是開放、簡單、基礎,你可以在上面自由創造,但現成的東西就很少了,比如剛開始接觸Android的時筆者驚訝於ImageView竟然不能設置來源一張網絡圖片甚至SD卡上的圖片作爲來源,對於習慣了前端開發的人這確實難以接收,後來理解到圖片的下載、緩存、解碼、錯誤處理、縮放裁剪這裏面每個環節都會有很多種情況,如果單純地設置一個src屬性就將其靈活性侷限了,此外ImageView畢竟是一個視圖類,做一些I/O、耗資源的粗活還得自己管理線程也不合適,也就接受了這種“自己動手豐衣足食”的理念。

所以在之前的項目開發中真的就自己動手實現了一個叫RemoteImageDownloader的類,其中歷經曲折真是不堪回首,既考慮到相同URL同時只下載一次、緩存、錯誤和重試機制,又要考慮到多個請求時如何管理隊列,更痛苦的是還得防止同時解碼多個圖片、必要時downsample以防內存超過限制……在整個開發過程中不斷爲其添磚加瓦,直到完善後才發現Github上有一款叫做UniversalImageLoader的庫,真是相見恨晚、淚流滿面啊,幾乎又做了一個RemoteImageDownloader,雖然對於項目來說它更符合應用場景,但讓項目來適應這個穩定、專人維護且被衆多主流應用使用的庫顯然是更明智的選擇。

參考地址:https://github.com/nostra13/Android-Universal-Image-Loader

Android Asynchronous Http Client

如果你開發的項目需要調用Restful API,那一定離不了異步HTTP請求、持久化Cookie存儲、處理多文件上傳、GZIP壓縮和各種I/O錯誤處理。異步請求通過AsyncTask可以解決,但線程不好管理,所以更常見的是Thread+Handler的模式,通過定義不同的Message來區分處理成功請求、連接超時、無法連接到網絡、服務器繁忙,在RequestHeader中自動加上GzipHeader,同時給OutputSteram自動套上GzipOutputStream,根據參數類型去組織Multipart或普通POST、用Preference去固化存儲Cookie等等,將它們全部封裝在一起,筆者就打造了一個名爲ApiRequest類HTTP處理類,也是隨着項目的進展不斷完善添磚加瓦,包括引入Activity Based的概念以便在finish activity之後就自動關閉連接等特性。再後來發生的事情想必大家都知道了:有一天遇到了Android Asynchronous Http Client,這款Instagram、Pinterest都在用的庫,再一次讓我欲哭無淚,因爲ApiRequest裏特性功能,幾乎都能找到。

參考地址:https://github.com/loopj/android-async-http

Pull To Refresh

下拉刷新,最具移動特色的交互方式。如果僅僅侷限於Pull To Refresh Listview那就太狹隘了,事實上Webview、ScrollView、GridView都是可以下拉刷新的,這就是Android Pull-to-refresh庫給我們帶來的UI組件,它在github上收穫了2700顆Star。這款插件筆者是直接拿來就用了,沒有重蹈覆轍(目測就算做來了體驗也不好),但還是在這裏推薦給大家,因爲確實太好用了。

參考地址:https://github.com/chrisbanes/Android-PullToRefresh

Gifview

Android的ImageView是沒法顯示Gif圖片的,要顯示動圖還是略費周折。爲了顯示動圖,筆者繼承了ImageView,加了setGifFile方法,通過Movie來解析Gif圖片,並且不斷地重繪、繪製時計算時間以調整幀數從而實現動圖的功能,這倒沒什麼難的,大夥兒貌似都這麼幹的。但是,後來在測試的時候發現很多在很多機器上Movie解析Gif都失敗了,原因不詳也沒有深究,就在網上找到了Gifview,效果很棒,雖然有些耗內存造成gc時卡頓,但能顯示動圖已經滿足了。值得一提的是,Gifview的作者是中國的。

參考地址:https://code.google.com/p/gifview

AndroidTouchGallery

Pinch to zoom、flip to navigate,如果你的項目包含Gallery、這些特性是必不可少的,這方面的庫倒是不少,筆者用的AndroidTouchGallery感覺就很實用、體驗也不錯,不過通用性倒不是太好,可能要做一些修改才能與你的項目融合,比如將Gifview、ImageLoader以及HttpClient相關的都整合進去,也需要費些心思的。

參考地址:https://github.com/Dreddik/AndroidTouchGallery

Android Support v4

這個Google官方的庫真是活力十足,ViewPager、Fragment等新特性也能在ICS以下SDK使用了,省了很多力氣。

原文鏈接:http://www.xprogrammer.com/697.html

發佈了255 篇原創文章 · 獲贊 44 · 訪問量 103萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章