1. 程式人生 > >安卓常用,比較有用的第三方框架

安卓常用,比較有用的第三方框架

1、Picasso 優點 (1) 自帶統計監控功能 支援圖片快取使用的監控,包括快取命中率、已使用記憶體大小、節省的流量等。 (2) 支援優先順序處理 每次任務排程前會選擇優先順序高的任務,比如 App 頁面中 Banner 的優先順序高於 Icon 時就很適用。 (3) 支援延遲到圖片尺寸計算完成載入 (4) 支援飛航模式、併發執行緒數根據網路型別而變 手機切換到飛航模式或網路型別變換時會自動調整執行緒池最大併發數,比如 wifi 最大併發為 4, 4g 為 3,3g 為 2。 這裡 Picasso 根據網路型別來決定最大併發數,而不是 CPU 核數。 (5) “無”本地快取 無”本地快取,不是說沒有本地快取,而是 Picasso 自己沒有實現,交給了 Square 的另外一個網路庫 okhttp 去實現,這樣的好處是可以通過請求 Response Header 中的 Cache-Control 及 Expired 控制圖片的過期時間。
Glide 優點 (1) 圖片快取->媒體快取 Glide 不僅是一個圖片快取,它支援 Gif、WebP、縮圖。甚至是 Video,所以更該當做一個媒體快取。 (2) 支援優先順序處理 (3) 與 Activity/Fragment 生命週期一致,支援 trimMemory Glide 對每個 context 都保持一個 RequestManager,通過 FragmentTransaction 保持與 Activity/Fragment 生命週期一致,並且有對應的 trimMemory 介面實現可供呼叫。 (4) 支援 okhttp、Volley Glide 預設通過 UrlConnection 獲取資料,可以配合 okhttp 或是 Volley 使用。實際 ImageLoader、Picasso 也都支援 okhttp、Volley。
(5) 記憶體友好 ① Glide 的記憶體快取有個 active 的設計 從記憶體快取中取資料時,不像一般的實現用 get,而是用 remove,再將這個快取資料放到一個 value 為軟引用的 activeResources map 中,並計數引用數,在圖片載入完成後進行判斷,如果引用計數為空則回收掉。 ② 記憶體快取更小圖片 Glide 以 url、view_width、view_height、螢幕的解析度等做為聯合 key,將處理後的圖片快取在記憶體快取中,而不是原始圖片以節省大小 ③ 與 Activity/Fragment 生命週期一致,支援 trimMemory ④ 圖片預設使用預設 RGB_565 而不是 ARGB_888
雖然清晰度差些,但圖片更小,也可配置到 ARGB_888。 其他:Glide 可以通過 signature 或不使用本地快取支援 url 過期 Picasso 所能實現的功能 Glide 都能做到,只是所需設定不同。兩者的區別是 Picasso 比 Glide 體積小很多且影象質量比 Glide 高,但Glide 的速度比 Picasso 更快,Glide 的長處是處理大型的圖片流,如 gif、video,如果要製作視訊類應用,Glide 當為首選。 Fresco 可以說是綜合了之前圖片載入庫的優點,其在5.0以下的記憶體優化非常好,但它的不足是體積太大,按體積進行比較:Fresco>Glide>Picasso,所以 Fresco 在圖片較多的應用中更能凸顯其價值,如果應用沒有太多圖片需求,不推薦使用 Fresco。

2、Android-async-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

3、Afinal框架

專案地址:https://github.com/yangfuhai/afinal
主要有四大模組:
 (1) 資料庫模組:android中的orm框架,使用了執行緒池對sqlite進行操作。
 (2) 註解模組:android中的ioc框架,完全註解方式就可以進行UI繫結和事件繫結。無需findViewById和setClickListener等。
 (3) 網路模組:通過httpclient進行封裝http資料請求,支援ajax方式載入,支援下載、上傳檔案功能。
 (4) 圖片快取模組:通過FinalBitmap,imageview載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
             FinalBitmap可以配置執行緒載入執行緒數量,快取大小,快取路徑,載入顯示動畫等。FinalBitmap的記憶體管理使用lru演算法
             沒有使用弱引用(android2.3以後google已經不建議使用弱引用,android2.3後強行回收軟引用和弱引用,詳情檢視android官方文件),
             更好的管理bitmap記憶體。FinalBitmap可以自定義下載器,用來擴充套件其他協議顯示網路圖片,比如ftp等。同時可以自定義bitmap顯示器,
             在imageview顯示圖片的時候播放動畫等(預設是漸變動畫顯示)。

4、xUtils框架

專案地址:https://github.com/wyouflf/xUtils
主要有四大模組:
  (1) 資料庫模組:android中的orm框架,一行程式碼就可以進行增刪改查;
            支援事務,預設關閉;
            可通過註解自定義表名,列名,外來鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請註解表名和列名);
            支援繫結外來鍵,儲存實體時外來鍵關聯實體自動儲存或更新;
            自動載入外來鍵關聯實體,支援延時載入;
            支援鏈式表達查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。          
  (2) 註解模組:android中的ioc框架,完全註解方式就可以進行UI,資源和事件繫結;
            新的事件繫結方式,使用混淆工具混淆後仍可正常工作;
            目前支援常用的20種事件繫結,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event。
  (3) 網路模組:支援同步,非同步方式的請求;
            支援大檔案上傳,上傳大檔案不會oom;
            支援GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求;
            下載支援301/302重定向,支援設定是否根據Content-Disposition重新命名下載的檔案;
            返回文字內容的請求(預設只啟用了GET請求)支援快取,可設定預設過期時間和針對當前請求的過期時間。            
  (4) 圖片快取模組:載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;
            支援載入網路圖片和本地圖片;
            記憶體管理使用lru演算法,更好的管理bitmap記憶體;
            可配置執行緒載入執行緒數量,快取大小,快取路徑,載入顯示動畫等...

5、ThinkAndroid

專案地址:https://github.com/white-cat/ThinkAndroid
主要有以下模組:
  (1)  MVC模組:實現檢視與模型的分離。
  (2)  ioc模組:android中的ioc模組,完全註解方式就可以進行UI繫結、res中的資源的讀取、以及物件的初始化。 
  (3)  資料庫模組:android中的orm框架,使用了執行緒池對sqlite進行操作。  
  (4)  http模組:通過httpclient進行封裝http資料請求,支援非同步及同步方式載入。
  (5)  快取模組:通過簡單的配置及設計可以很好的實現快取,對快取可以隨意的配置
  (6)  圖片快取模組:imageview載入圖片的時候無需考慮圖片載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
  (7)  配置器模組:可以對簡易的實現配對配置的操作,目前配置檔案可以支援Preference、Properties對配置進行存取。
  (8)  日誌列印模組:可以較快的輕易的是實現日誌列印,支援日誌列印的擴充套件,目前支援對sdcard寫入本地列印、以及控制檯列印
  (9)  下載器模組:可以簡單的實現多執行緒下載、後臺下載、斷點續傳、對下載進行控制、如開始、暫停、刪除等等。
  (10) 網路狀態檢測模組:當網路狀態改變時,對其進行檢

6、LoonAndroid 

專案地址:https://github.com/gdpancheng/LoonAndroid
主要有以下模組:
  (1)  自動注入框架(只需要繼承框架內的application既可)
  (2)  圖片載入框架(多重快取,自動回收,最大限度保證記憶體的安全性)
  (3)  網路請求模組(繼承了基本上現在所有的http請求)
  (4)  eventbus(整合一個開源的框架)
  (5)  驗證框架(整合開源框架)
  (6)  json解析(支援解析成集合或者物件)
  (7)  資料庫(不知道是哪位寫的 忘記了)
  (8)  多執行緒斷點下載(自動判斷是否支援多執行緒,判斷是否是重定向)
  (9)  自動更新模組
  (10) 一系列工具類

7、KJFrameForAndroid

KJFrameForAndroid 又叫KJLibrary,是一個android的orm 和 ioc 框架。同時封裝了android中的Bitmap與Http操作的框架,使其更加簡單易用;
KJFrameForAndroid的設計思想是通過封裝Android原生SDK中複雜的複雜操作而達到簡化Android應用級開發,最終實現快速而又安全的開發APP。我們提倡用最少的程式碼,完成最多的操作,用最高的效率,完成最複雜的功能。
同時,KJFrameForAndroid是免費的、開源的、簡易的、遵循Apache Licence 2.0開源協議釋出的android應用開發框架,總共分為五大模 塊:UILibrary,UtilsLibrary,HttpLibrary,BitmapLibrary,DBLibrary。

8、AndroidAnnotations

xUtils是國內比較火的快速開發框架,但是它的註解機制不是太穩定而且註解可選也比較少,國外的一個框架主要專注於註解的開發,簡化Android程式碼編寫,它除了有依賴注入的特性以外,還集成了Ormlite,spring-android中的REST模板。使用起來非常方便,大大提高了開發效率。

1.下載AndroidAnnotations:

專案中重要的兩個jar包分別是:androidannotations-api-3.0.1.jar和androidannotations-3.0.1.jar
2.新建一個android專案,然後將androidannotations-api-3.0.1.jar複製到libs目錄下,在專案的根目錄新建一個資料夾,命名為compile-libs,然後將androidannotations-3.0.1.jar複製到該目錄下

3.在你的工程上右鍵單擊,在彈出的選單中選擇"Properties",找到Java Compiler,確保Compiler compliance level設定為1.6,否則的話處理器將不起作用

4.然後設定專案屬性:右鍵->Properties->Java Compiler->Annotation Processing 在該頁面選中Enable project specific settings。

5.轉到java Compiler 中的 Annotation Processing 下邊的 Factory Path,在此將androidannotations-3.0.1.jar新增到其中。

註解1:@ViewById 與findViewById功能相似,如果ViewById後沒有設定資源ID的話,就是自動查詢與變數名稱相同的id資源。

註解2:@Click 點選事件處理的註解。

註解3:@UiThread 後臺Ui執行緒的註解,省去了Handler等等。

註解4:@EActivity 提示Activity的註解,注意,該註解將Activity編譯成Activity_,注意,多一個下劃線“_”,因此在AndroidManifest.xml檔案中需要將其新增下滑線

註解5:@AfterViews 是指View類注入完畢之後執行的程式碼。



特效:

常用效果:

   https://github.com/SimonVT/android-menudrawer 導航抽屜 

4. http://actionbarsherlock.com/  與https://github.com/JakeWharton/ActionBarSherlock    actionbar.

8 https://github.com/47deg/android-swipelistview  實現了自定義ListView單元格,可通過滑動來顯示擴充套件面板。

9 https://github.com/siyamed/android-satellite-menu  有一連串的按鈕彈出

10 https://github.com/maurycyw/StaggeredGridView 交錯排列的GridView

https://github.com/dodola/android_waterfall  https://github.com/youxilua/waterfall4android

https://github.com/dodola/WaterFallExt 瀑布流

11 https://github.com/daizhenjun/ImageFilterForAndroid  圖片處理效果

12 https://github.com/nostra13/Android-Universal-Image-Loader 非同步載入圖片,萬能圖片載入 ListView GridView ImagePage ImageGaller

例項:http://blog.csdn.NET/banketree/article/details/8004475

13 https://github.com/JakeWharton/Android-ViewPagerIndicator 有標題頁面滑動效果

14 https://github.com/pakerfeldt/android-viewflow ViewFlow圖片滑動

效果圖  

14 http://www.apkbus.com/android-2-1.html

104628dd3y638lqlbylbx6.png

框架:

2 ormlite sqlite的orm框架 /GreenDAO

3 漢字轉拼音 pinyin4j 與 hanziTopinyin

4 AACPlayer

5 GSON json框架 fastjson

6 Otto 是Android系統的一個Event Bus模式類庫。用來簡化應用元件間通訊。

7 afinal框架是一個開源的android的orm和ioc應用開發框架

xUtils 源於Afinal框架 對Afinal進行了大量重構,使得xUtils支援大檔案上傳,更全面的http請求協議支援

9 dom4j  XML解析器

11 android XMPP推送 下載

12 jsoup網路爬蟲

14 VLC 視訊聊天

專案篇:

  • :oschina網站的客戶端哦,wp版,iOS版都有開源
  • :今天才知道是開源的,趕緊收藏
  • :谷歌開發者大會應用,雖然有點難懂,還是很有參考價值(比如其中的圖片載入)
  • :eoe網站Android客戶端也開源咯

元件篇:

  • :可以實現類似FlipBoard那種華麗麗的翻頁
  • :可以拖動item重新排序的listview,效果非常贊
  • :咳咳,有些同學非常喜歡Android的holo風格,這個專案絕對讓你happy
  • :這玩意可以讓ViewPager翻起來更酷,誰用誰知道~~
  • :這個是抽屜介面(就是facebook那種)的各種實現版本中,最好的,木有之一!
  • :iPhone上經常有這個,就是listview的……不知道怎麼解釋,自己下載看看吧
  • :這是一個瀑布流佈局的實現,還不是很完善,但作為學習的案例或者在其基礎上擴充套件還是不錯的
  • :android的非同步請求元件,我個人習慣使用asynctask,不過這個實現還是很優秀的,也推薦給大家
  • :大家熟知的ActionBar在2.x上的相容性方案;類似的相容性元件還有許多,有時間為大家一一列出;
  • :不止是一個SDK那麼簡單哦,比某浪和某人的SDK強幾個數量級;
  • :想在2.xSDK上使用Android 3.0新增的動畫API,那就是它了;沒用過的同學一定要試試哦,非常方便~
  • :讓listview的item可以向右滑動,新版Gmail和Pocket裡面有用到哦~
  • :Android的RESTful封裝,沒聽過RESTful?你去死吧
  • :和上面的DataDroid同樣屬於美化底層程式碼的,這個lib簡化了不同元件之間的事件傳遞
  • :Android3.0以上才有的switch,有好心人給遷移到2.x上了,哈
  • :我們都知道webview,也知道Android的chrome又自己的核心,這個專案就是把chrome的核心給匯出來做成一個chromeview了,大家可以在自己的專案裡用,有興趣的可以玩玩
  • picasso:來自square的圖片非同步載入,好像是最近才開源的,API風格很獨特
網站篇:
  • :各種專案很多,就是不容易挖掘,但是開發者必備
  • :曾經一般,現在越做越好了,很多開源專案;
  • :經過一番整理,現在非常強大;小作品居多;
  • :我曾經想做這麼一個網站來著,很多開源元件的集合
  • 爬爬的部落格

圖片處理框架:

PDF框架: IText  MuPDF  droidtext  com/sun/pdfview  com.lowagie.text(iText-2.1.7)



下拉重新整理

AChartEngine(簡稱ACE)是Google的一個開源圖表庫(for Android)。它功能強大,支援散點圖、折線圖、餅圖、氣泡圖、柱狀圖、短棒圖、儀表圖等多種圖表。

開源的 Material Design 豆瓣客戶端(A Material Design app for douban.com)