1. 程式人生 > >Android常用工具庫

Android常用工具庫

主要包括那些不錯的開發庫,包括依賴注入框架、圖片快取、網路請求、資料庫 ORM 建模、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,在編譯時完成,不會對執行時有效能影響。
其他:與 roboguice 的比較:roboguice 通過執行時讀取 annotations 進行反射,所以可能影響應用效能,而 AndroidAnnotations 在編譯時生成子類,所以對效能沒有影響

5、AutoParcel
註解自動生成Parcelable實現程式碼的庫
專案地址:https://github.com/frankiesardo/auto-parcel
這篇文章詳細介紹了它的使用方法:AutoParcel
作者認為使用AutoParcel的好處是,可以簡化建構函式,方便IDE程式碼自動完成,方便測試,前向相容,生成不可變的物件。
文件介紹:https://github.com/frankiesardo/auto-parcel

二、圖片快取

2、picasso
square 開源的圖片快取
專案地址:https://github.com/square/picasso


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

4、fresco
一款強大的圖片快取工具,由 Facebook 開發
專案地址:https://github.com/facebook/fresco
文件介紹:http://frescolib.org/
特點:(1) 兩個記憶體快取加上磁碟快取構成了三級快取
(2) 支援流式,可以類似網頁上模糊漸進式顯示圖片
(3) 對多幀動畫圖片支援更好,如 Gif、WebP
(4) 更多樣的顯示,如圓角、進度條、點選重試、自定義對焦點
(5) 更多樣的載入,如支援 EXIF、全面支援 WebP
(6) 支援 Android 2.3+

5、Glide
Glide 是一個 android 平臺上的快速和高效的開源的多媒體資源管理庫,提供 多媒體檔案的壓縮,記憶體和磁碟快取, 資源池的介面。
它可以最大效能地在 Android 裝置上讀取、解碼、顯示圖片和視訊。Glide 可以將遠端的圖片、視訊、動畫圖片等快取在裝置本地便於提高使用者瀏覽圖片的流暢體驗。
專案地址:https://github.com/bumptech/glide
特點:
(1) GIF 動畫的解碼
(2) 本地視訊劇照的解碼
(3) 支援縮圖
(4) Activity 生命週期的整合
(5) 轉碼的支援
(6) 動畫的支援
(7) OkHttp 和 Volley 的支援

三、網路請求

2、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 快取減少不必要的請求

四、資料庫 orm 工具包

五、Android 公共庫

2、UltimateAndroid
UltimateAndroid 是一個快速開發 Android 應用的框架,框架目前主要包含的功能有 View Injection,ORM,非同步網路請求和圖片載入,自動化指令碼測試,磁碟 LRU 等功能.同時提供了類似於 TripleDes、Webview 快速設定、Md5 處理、String 處理,Https 處理等常用工具類,還有超過 100 多種 UI 控制元件效果。
專案地址:https://github.com/cymcsg/UltimateAndroid
官網網址:http://blog.marshalchen.com/UltimateAndroid/

3、SAF
SAF(Simple Android Framework)是一個簡單的 android 框架,它為開發 Android app 提供了基礎性元件。
專案地址:https://github.com/fengzhizi715/SAF
官網網址:http://www.salesuite.cn/
包括:(1)Event Bus(事件匯流排)
(2) Rest Client(http 的框架)
(3) Image Cache(圖片快取)
(4) Dependency Injection(依賴注入)
(5) Sqlite ORM(sqlite 的 orm)
(6) Router(Activity、Fragment 的 Router)
(7) Utils(各種常用的工具類)

4、Barber
Custom View 神器。通過簡單的註解幫助你大大減少 Custom View 中的程式碼量。由於和 ButterKnife 一樣使用了 Annotation Proccessor ,所以對程式效能沒有影響。
專案地址:https://github.com/hzsweers/barber

5、
device-year-class
A library that analyzes an Android device’s specifications and calculates which year the device would be considered “high end”.(facebook 開發的檢測手機主流配置工具)
專案地址:https://github.com/facebook/device-year-class

6、RxAndroid
對RxJava在Android上的擴充套件,使得Android上也很容易實現reactive components,簡化執行緒操作,從而寫出很漂亮的程式碼。
專案地址:https://github.com/ReactiveX/RxAndroid
文件介紹:給Android 開發者的 RxJava 詳解

六、多媒體相關

3、Vitamio 和bilibili https://github.com/Bilibili
是一款 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)等常見的多種視訊流媒體協議,包括點播與直播。

6、UniversalVideoView
Android上定義播放器控制元件,支援自定義控制UI, 全屏播放, 重力感應自動切換橫豎屏.
專案地址:https://github.com/linsea/UniversalVideoView
Sample Screenshot 1 Sample Screenshot 2

11、K-Sonic
一個基於Sonic的變音Demo,可調節Speed,Pitch,Rate.
專案地址:https://github.com/jcodeing/K-Sonic
Demo 地址:Download here

七、圖片相關

3、Bitmap Smart Clipping using OpenCV
圖片智慧裁剪保留重要部分顯示
專案地址:https://github.com/beartung/tclip-android
利用淘寶的 http://code.taobao.org/p/tclip/ 庫完成
一淘玩客正在使用的圖片裁剪,自動識別圖片中的重要區域,並且在圖片裁剪時保留重要區域
特點:(1). 能進行人臉識別。圖片中有人臉,將自動視為人臉區域為重要區域,將不會被裁剪掉
(2).自動其它重要區域。如果圖片中未識別出人臉,則會根據特徵分佈計算出重區域

5、uCrop
Yalantis 出品的強大的圖片裁剪庫 ,支援縮放,旋轉圖片,支援各種比例的裁剪框
專案地址:https://github.com/Yalantis/uCrop
效果圖:Renderings

八、事件匯流排(訂閱者模式)

通過釋出/訂閱事件解耦事件傳送和接受,從而簡化應用程式元件(Activities, Fragments 及後臺執行緒)之間的通訊

Otto
Square 的開源專案,基於 Guava 的 Android 優化
專案地址:https://github.com/square/otto
文件介紹:http://square.github.io/otto/
EventBus 與 Otto 的功能及效能對比文件
EventBus 與 Otto 效能對比 Demo Apk

九、感測器

十、安全

十一、外掛化

更多見:Android 外掛化作用、概念以及不錯的資料(包括開源專案)和解決方案

十二、檔案

對不同文件型別的處理,包括 PDF、Word、EPub、Html、Zip 等

3、Office 365 SDK for Android Preview
可支援 Microsoft SharePoint Lists, Microsoft SharePoint Files, Microsoft Exchange Calendar, Microsoft Exchange Contacts, Microsoft Exchange Mail
專案地址:https://github.com/OfficeDev/Office-365-SDK-for-Android

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

7、Image File Selector
輕量級的圖片檔案選擇器,用系統api選取,壓縮和裁切圖片,可以方便的得要指定尺寸的圖片
專案地址:https://github.com/sw926/ImageFileSelector

十三、其他

5、PrainView
PaintView 是一個畫圖工具:
可直接使用設定按鈕來實現已擁有的方法,且拓展性強
基礎功能:更換顏色、更換橡皮、以及更換橡皮和筆的粗細、清屏、倒入圖片
特殊功能:儲存畫筆軌跡幀動畫、幀動畫匯入匯出、ReDo和UnDo
專案地址:Paintview

6、CodeView
CodeView程式碼檢視/修改工具: 基於WebView製作的程式碼編輯器,實現程式碼高亮,暗色主題

MarkDownView
支援MarkDown語法的渲染器,基於WebView的MarkDown渲染器,支援標準化的MarkDown語法, 呼叫介面和CodeView保持一致使用

VerTextView豎行排版的TextView