1. 程式人生 > >Android開源專案第二篇——工具庫篇

Android開源專案第二篇——工具庫篇

通過這些專案你可以大幅度減少不必要的開發而將精力放在更重要的地方。 

一、依賴注入DI 
通過依賴注入減少View、服務、資源簡化初始化,事件繫結等重複繁瑣工作 
1. AndroidAnnotations(Code Diet) android快速開發框架 
專案地址:https://github.com/excilys/androidannotations 
文件介紹:https://github.com/excilys/androidannotations/wiki 
官方網站:http://androidannotations.org/ 
特點:(1)依賴注入:包括view,extras,系統服務,資源等等 
(2)簡單的執行緒模型,通過annotation表示方法執行在ui執行緒還是後臺執行緒 

(3)事件繫結:通過annotation表示view的響應事件,不用在寫內部類 
(4)REST客戶端:定義客戶端介面,自動生成REST請求的實現 
(5)沒有你想象的複雜:AndroidAnnotations只是在在編譯時生成相應子類 
(6)不影響應用效能:僅50kb,在編譯時完成,不會對執行時有效能影響。 
PS:與roboguice的比較:roboguice通過執行時讀取annotations進行反射,所以可能影響應用效能,而AndroidAnnotations在編譯時生成子類,所以對效能沒有影響 

2. roboguice 幫你處理了很多程式碼異常,利用annotation使得更少的程式碼完成專案 

專案地址:https://github.com/roboguice/roboguice 
文件介紹:https://github.com/roboguice/roboguice/wiki 

3. butterknife 利用annotation幫你快速完成View的初始化,減少程式碼 
專案地址:https://github.com/JakeWharton/butterknife 
文件介紹:http://jakewharton.github.io/butterknife/ 

4. Dagger 依賴注入,適用於Android和Java 
專案地址:https://github.com/square/dagger 
文件介紹:http://square.github.io/dagger/ 


二、圖片快取 
1. Android-Universal-Image-Loader 圖片快取 
目前使用最廣泛的圖片快取,支援主流圖片快取的絕大多數特性。 
專案地址:https://github.com/nostra13/Android-Universal-Image-Loader 
Demo地址:https://github.com/Trinea/TrineaDownload/blob/master/universal-imageloader-demo.apk?raw=true 
文件介紹:http://www.intexsoft.com/blog/item/74-universal-image-loader-part-3.html 

2. picasso square開源的圖片快取 
專案地址:https://github.com/square/picasso 
文件介紹:http://square.github.io/picasso/ 
特點:(1)可以自動檢測adapter的重用並取消之前的下載 
(2)圖片變換 
(3)可以載入本地資源 
(4)可以設定佔位資源 
(5)支援debug模式 

3. ImageCache 圖片快取,包含記憶體和Sdcard快取 
專案地址:https://github.com/Trinea/AndroidCommon 
Demo地址:https://play.google.com/store/apps/details?id=cn.trinea.android.demo 
文件介紹:http://www.trinea.cn/?p=704 
特點:(1)支援預取新圖片,支援等待佇列 
(2)包含二級快取,可自定義檔名儲存規則 
(3)可選擇多種快取演算法(FIFO、LIFO、LRU、MRU、LFU、MFU等13種)或自定義快取演算法 
(4)可方便的儲存及初始化恢復資料 
(5)支援不同型別網路處理 
(6)可根據系統配置初始化快取等 

三、網路相關 
1. Asynchronous Http Client for Android Android非同步Http請求 
專案地址:https://github.com/loopj/android-async-http 
文件介紹:http://loopj.com/android-async-http/ 
特點:(1) 在匿名回撥中處理請求結果 
(2) 在UI執行緒外進行http請求 
(3) 檔案斷點上傳 
(4) 智慧重試 
(5) 預設gzip壓縮 
(6) 支援解析成Json格式 
(7) 可將Cookies持久化到SharedPreferences 

2. android-query 非同步載入,更少程式碼完成Android載入 
專案地址:https://github.com/androidquery/androidquery或https://code.google.com/p/android-query/ 
文件介紹:https://code.google.com/p/android-query/#Why_AQuery? 
Demo地址:https://play.google.com/store/apps/details?id=com.androidquery 
特點:https://code.google.com/p/android-query/#Why_AQuery? 

3. Async Http Client Java非同步Http請求 
專案地址:https://github.com/AsyncHttpClient/async-http-client 
文件介紹:http://sonatype.github.io/async-http-client/ 

4. Ion 支援圖片、json、http post等非同步請求 
專案地址:https://github.com/koush/ion 
文件介紹:https://github.com/koush/ion#more-examples 

5. HttpCache Http快取 
專案地址:https://github.com/Trinea/AndroidCommon 
Demo地址:https://play.google.com/store/apps/details?id=cn.trinea.android.demo 
Demo程式碼:https://github.com/Trinea/AndroidDemo/blob/master/src/cn/trinea/android/demo/HttpCacheDemo.java 
特點是:(1) 根據cache-control、expires快取http請求 
(2) 支援同步、非同步Http請求 
(3) 在匿名回撥中處理請求結果 
(4) 在UI執行緒外進行http請求 
(5) 預設gzip壓縮 

6. Http Request 
專案地址:https://github.com/kevinsawicki/http-request 
文件介紹:https://github.com/kevinsawicki/http-request#examples 

7. okhttp square開源的http工具類 
專案地址:https://github.com/square/okhttp 
文件介紹:http://square.github.io/okhttp/ 
特點:(1) 支援SPDY(http://zh.wikipedia.org/wiki/SPDY)協議。SPDY協議是Google開發的基於傳輸控制協議的應用層協議,通過壓縮,多路複用(一個TCP連結傳送網頁和圖片等資源)和優先順序來縮短載入時間。 
(2) 如果SPDY不可用,利用連線池減少請求延遲 
(3) Gzip壓縮 
(4) Response快取減少不必要的請求 

8. Retrofit RESTFUL API設計 
專案地址:https://github.com/square/retrofit 
文件介紹:http://square.github.io/retrofit/ 

四、資料庫 orm工具包 
orm的db工具類,簡化建表、查詢、更新、插入、事務、索引的操作 
1. greenDAO Android Sqlite orm的db工具類 
專案地址:https://github.com/greenrobot/greenDAO 
文件介紹:http://greendao-orm.com/documentation/ 
官方網站:http://greendao-orm.com/ 
特點:(1)效能佳 
(2) 簡單易用的API 
(3) 記憶體小好小 
(4) 庫大小小 

2. ActiveAndroid Android Sqlite orm的db工具類 
專案地址:https://github.com/pardom/ActiveAndroid 
文件介紹:https://github.com/pardom/ActiveAndroid/wiki/_pages 

3. Sprinkles Android Sqlite orm的db工具類 
專案地址:https://github.com/emilsjolander/sprinkles 
文件介紹:http://emilsjolander.github.io/blog/2013/12/18/android-with-sprinkles/ 
特點:比較顯著的特點就是配合https://github.com/square/retrofit能儲存從伺服器獲取的資料 

五、Android公共庫 
1. Guava Google的基於java1.6的類庫集合的擴充套件專案 
包括collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O等等. 這些高質量的API可以使你的JAVa程式碼更加優雅,更加簡潔 
專案地址:https://code.google.com/p/guava-libraries/ 
文件介紹:https://code.google.com/p/guava-libraries/wiki/GuavaExplained 

2. AndroidCommon Android公共庫 
專案地址:https://github.com/Trinea/AndroidCommon 
Demo地址:https://play.google.com/store/apps/details?id=cn.trinea.android.demo 
文件介紹:http://www.trinea.cn/?p=778 
包括:(1)快取(圖片快取、預取快取、網路快取) 
(2) 公共View(下拉及底部載入更多ListView、底部載入更多ScrollView、滑動一頁Gallery) 
(3) Android常用工具類(網路、下載、Android資源操作、shell、檔案、Json、隨機數、Collection等等) 

六、Android 高版本向低版本相容 
1. ActionBarSherlock 為Android所有版本提供統一的ActionBar,解決4.0以下ActionBar的適配問題 
專案地址:https://github.com/JakeWharton/ActionBarSherlock 
Demo地址:https://play.google.com/store/apps/details?id=com.actionbarsherlock.sample.demos 
APP示例:太多了。。現在連google都在用 

2. Nine Old Androids 將Android 3.0(Honeycomb)所有動畫API(ObjectAnimator ValueAnimator等)相容到Android1.0 
專案地址:https://github.com/JakeWharton/NineOldAndroids 
Demo地址:https://play.google.com/store/apps/details?id=com.jakewharton.nineoldandroids.sample 
文件介紹:http://nineoldandroids.com/ 

3. HoloEverywhere 將Android 3.0的Holo主題相容到Android2.1++ 
專案地址:https://github.com/Prototik/HoloEverywhere 
Demo地址:https://raw.github.com/Prototik/HoloEverywhere/repo/org/holoeverywhere/demo/2.1.0/demo-2.1.0.apk 
文件介紹:http://android-developers.blogspot.com/2012/01/holo-everywhere.html 

七、多媒體相關 
1. cocos2d-x 跨平臺的2d遊戲框架,支援Android、IOS、Linux、Windows等眾多平臺 
專案地址:https://github.com/cocos2d/cocos2d-x 
文件介紹:http://www.cocos2d-x.org/wiki 
官方網站:http://www.cocos2d-x.org/ 

2. Vitamio 是一款Android與iOS平臺上的全能多媒體開發框架 
專案地址:https://github.com/yixia/VitamioBundle 
網站介紹:http://www.vitamio.org/docs/ 
特點:(1) 全面支援硬體解碼與GPU渲染 
(2) 能夠流暢播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常見格式的視訊 
(3) 在Android與iOS上跨平臺支援 MMS, RTSP, RTMP, HLS(m3u8)等常見的多種視訊流媒體協議,包括點播與直播。 

3. PhotoProcessing 利用ndk處理圖片庫,支援Instafix、Ansel、Testino、XPro、Retro、BW、Sepia、Cyano、Georgia、Sahara、HDR、Rotate、Flip 
專案地址:https://github.com/lightbox/PhotoProcessing 
Demo地址:https://github.com/Trinea/TrineaDownload/blob/master/photo-processing.apk?raw=true 

4. Android StackBlur 圖片模糊效果工具類 
專案地址:https://github.com/kikoso/android-stackblur 
Demo地址:https://github.com/kikoso/android-stackblur/blob/master/StackBlurDemo/bin/StackBlurDemo.apk?raw=true 
文件介紹:https://github.com/kikoso/android-stackblur#usage 

八、其他 
1. Salvage view 帶View快取的Viewpager PagerAdapter,很方便使用 
專案地址:https://github.com/JakeWharton/salvage 

2. Android-PasscodeLock 應用鎖,每次啟動或從任何Activity啟動應用都需要輸入四位數字的密碼方可進入 
專案地址:https://github.com/wordpress-mobile/Android-PasscodeLock 
Demo地址:https://play.google.com/store/apps/details?id=com.sothree.umano 
APP示例:Wordpress Android,支付寶,挖財 

3. android-lockpattern Android的圖案密碼解鎖 
專案地址:https://code.google.com/p/android-lockpattern/ 
Demo地址:https://play.google.com/store/apps/details?id=group.pals.android.lib.ui.lockpattern.demo 
使用介紹:https://code.google.com/p/android-lockpattern/wiki/QuickUse 
示例APP:Android開機的圖案密碼解鎖,支付寶的密碼解鎖 

4. GlowPadBackport將Android4.2的鎖屏介面解鎖擴充套件到Android1.6及1.6+ 
專案地址:https://github.com/rock3r/GlowPadBackport 
Demo地址:https://play.google.com/store/apps/details?id=net.sebastianopoggi.samples.ui.GlowPadSample 
效果圖:https://lh6.ggpht.com/U070b6Lh6cVsVwx4jN-5nq0xqiB1PBzrYABPeJIEe2hZQ5UWOxc-FDUG77wADelToHA=h310-rw 

5. GlowPadView Android4鎖屏介面解鎖 
專案地址:https://github.com/nadavfima/GlowPadView 
效果圖:https://raw.github.com/nadavfima/GlowPadView/master/example.png 

6. Android Priority Job Queue Android後臺任務佇列 
專案地址:https://github.com/path/android-priority-jobqueue 
文件介紹:https://github.com/path/android-priority-jobqueue#getting-started 

7. jsoup 一個解析html的java庫,可方便的提取和操作資料 
專案地址:https://github.com/jhy/jsoup 
官方網站:http://jsoup.org/ 
作用:(1) 從一個url、檔案或string獲得html並解析 
(2) 利用dom遍歷或css選擇器查詢、提取資料 
(3) 操作html元素 
(4) 根據白名單去除用於提交的非法資料防止xss攻擊 
(5) 輸出整齊的html 

8.ZIP java壓縮和解壓庫 
專案地址:https://github.com/zeroturnaround/zt-zip 
文件介紹:https://github.com/zeroturnaround/zt-zip#examples 
作用:(1) 解壓和壓縮,並支援資料夾內遞迴操作 
(2) 支援包含和排除某些元素 
(3) 支援重新命名元素 
(4) 支援遍歷zip包內容 
(5) 比較兩個zip包等功能 

9. Cobub Razor 開源的mobile行為分析系統,包括web端、android端,支援ios和window phone 
專案地址:https://github.com/cobub/razor 
Demo地址:http://demo.cobub.com/razor 
網站介紹:http://dev.cobub.com/ 

10. aFileChooser 檔案選擇器,可內嵌到程式中,而無需使用系統或三方檔案選擇器。 
專案地址:https://github.com/iPaulPro/aFileChooser 

11. androidpn 基於xmpp協議的訊息推送解決方案,包括伺服器端和android端。 
專案地址:https://github.com/dannytiehui/androidpn 

12. Android外掛式開發 
專案地址:https://github.com/umeng/apf