Glide — 整合網絡協議棧
原文:Integrating Network Stacks
作者:Norman Peitek
翻譯:Dexter0218
在學習了許多加載和顯示圖片的方案后,我們要研究為Glide改變基礎網絡協議棧。這篇指導建立在你使用Gradle的前提上。
Glide 系列概覽
- 入門簡介
- 高級加載
- 適配器(ListView, GridView)
- 占位圖& 淡入淡出動畫
- 圖片大小 & 縮放
- 播放GIF & 視頻
- 緩存基礎
- 請求優先級
- 縮略圖
- 回調:定制view中使用SimpleTarget和ViewTarget
- 通知欄和桌面小控件的圖片加載
- 異常: 調試和報錯處理
- 自定義變換
- 用animate()定制動畫
- 整合網絡協議棧
- 用Modules定制Glide
- Glide Module 案例: 接受自簽名HTTPS證書
- Glide Module 案例: 自定義緩存
- Glide Module 案例: 通過加載自定義大小圖片優化
- 動態使用 Model Loaders
- 如何旋轉圖片
- 系列綜述
整合網絡協議棧
通過HTTP/HTTPS從網絡下載圖片,是顯示圖片的一個重要的環節。雖然標準的Android網絡包可以完成這些工作,但是仍然有很多開發者為了改善android的網絡做了一些開發。每個庫都有自己的優點和缺點。最終取決于項目的實際需求和開發者的個人愛好。
Glide的開發者不強迫你使用他們推薦的網絡庫。所以,Glide是無關HTTP/S的。理論上,它能實現基本的網絡功能,在任何情況下工作。它需要一個Glide的ModelLoader的接口設置。為了讓這個更簡單,Glide提供了兩個網絡庫的支持:OkHttp 和 Volley。
OkHttp 2
我們假設你想要用OkHttp 2
作為你的Glide網絡庫。可以手動通過定義一個GlideModule
來實現整合。如果你想要避免手動整合,那就打開你的build.gradle
,然后添加下面的依賴:
dependencies {
// your other dependencies
// ...
// Glide
compile 'com.github.bumptech.glide:glide:3.7.0'
// Glide's OkHttp2 Integration
compile 'com.github.bumptech.glide:okhttp-integration:1.4.0@aar'
compile 'com.squareup.okhttp:okhttp:2.7.5'
}
Gradle會自動合入必須的GlideModule
到你的Android.Manifest
中。Glide會識別manifest
里的東西,并為所有的網絡連接使用OkHttp。
Volley
另一方面,如果你偏向于使用Volley,你必須把你的build.gradle
依賴改成下面的:
dependencies {
// your other dependencies
// ...
// Glide
compile 'com.github.bumptech.glide:glide:3.7.0'
// Glide's Volley Integration
compile 'com.github.bumptech.glide:volley-integration:1.4.0@aar'
compile 'com.mcxiaoke.volley:library:1.0.8'
}
這會添加Volley和集成庫(integration library)到你的項目中。集成庫添加GlideModule
到你的Android.Manifest
文件中。Glide會自動識別,然后使用Volley作為網絡連接庫。沒有其他的配置要做了!
警號:如果你同時定義了2個庫在你的build.gradle,兩個都會被添加。由于Glide不能按照任何特別的順序加載它們,不知道哪個庫實際上被調用,可能會導致不穩定的結果。請確保你只添加了一個集成庫。
OkHttp 3
如果你想要使用最新的OkHttp 3
作為網絡協議棧,通過提供的集成庫整個它:
ependencies {
// your other dependencies
// ...
// Glide
compile 'com.github.bumptech.glide:glide:3.7.0'
// Glide's OkHttp3 Integration
compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
}
其他網絡庫
如果你是其他網絡庫的粉絲,那么就不幸了。Glide并不支持除了Volley、OkHttp2和OkHttp3以外的庫。然而,你可以通過在Github上推送一個請求盡情集成你喜歡的庫到Glide里。Volley、OkHttp2和OkHttp3的集成可以給你一個指導方向。
總結
顯然,集成網絡庫非常簡單,如果你正好使用Gradle作為你編譯系統,并不需要進一步定制。如果你不使用Gradle,可以看下這里。不久的將來,我們將會介紹更高級的定制化GlideModule
。敬請期待!