**為何使用 Glide?**
有經驗的 Android 開發者可以跳過這節,但對于初學者來說,你可能會問自己為什么你想要去用 Glide,而不是自己去實現。
Android 在處理圖片工作的時候顯得有點娘,因為它會以像素形式加載圖片到內存中去,一張照片平均普通的手機攝像頭尺寸是 2592x193 像素(5百萬像素)將大約會分配 19MB 內存。對于復雜的網絡情況,緩存和圖片處理,如果你用了一個測試完善開發完成的庫,如 Glide,你會省下大量的時間,還不會讓你頭疼!
在這個系列,我們將看到 Glide 的很多特性,去看下這篇博客的提綱,并考慮你是否真的要去開發所有這些功能。
**添加 Glide**
希望我們現在已經說服你去用一個庫去處理你的圖片加載請求了。如果你想要了解更多 Glide 的情況,這就是為你準備的指南!
首先,添加 Glide 到你的依賴中,寫這篇博客的時候,最新的版本是 Glide 是 3.6.1(譯者:現在是3.7.0了)
**Gradle?**
和大多數依賴一樣,在一個 Gradle 項目中在你的 `build.gradle` 中添加下面這行代碼:
`compile 'com.github.bumptech.glide:glide:3.6.1'`
**Maven?**
Glide 也支持 Maven 項目:
~~~
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>glide</artifactId>
<version>3.6.1</version>
<type>aar</type>
</dependency>
~~~
**第一次:從一個 URL 中加載圖片?**
就像 Picasso, Glide 庫是使用[流接口(fluent interface)](https://en.wikipedia.org/wiki/Fluent_interface)。對一個完整的功能請求,Glide 建造者要求最少有三個參數。
* `with(Context context)` - 對于很多 Android API 調用,[Context](https://developer.android.com/reference/android/content/Context.html?hl=zh-cn) 是必須的。Glide 在這里也一樣
* `load(String imageUrl)` - 這里你可以指定哪個圖片應該被加載,同上它會是一個字符串的形式表示一個網絡圖片的 URL
* `into(ImageView targetImageView)` 你的圖片會顯示到對應的 ImageView 中。
理論解釋總是蒼白的,所以,看一下實際的例子吧:
~~~
ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
String internetUrl = "http://i.imgur.com/DvpvklR.png";
Glide
.with(context)
.load(internetUrl)
.into(targetImageView);
~~~
就這樣!如果圖片的 URL 存在并且你的 `ImageView`是可見的,你會在幾秒后看到圖片。萬一圖片不存在,Glide 會返回一個錯誤的回調(我們會在后面討論這個)。你可能已經相信這三行代碼對你而言是有用的,但是這只是冰山一角啦。
**展望**?
在下一篇文章中,除了從一個網絡 URL 中加載,我們將開始其他選項來加載圖片。具體來說,我們將從 Android 資源,本地文件,和一個 Uri 中加載圖片。
- 前言
- 一開始
- 二加載進階
- 三ListAdapter(ListView, GridView)
- 四占位符 和 漸現動畫
- 五圖片重設大小 和 縮放
- 六顯示 Gif 和 Video
- 七緩存基礎
- 八請求優先級
- 九縮略圖
- 十回調:SimpleTarget 和 ViewTarget 用于自定義視圖類
- 十一加載圖片到通知欄和應用小部件中
- 十二異常:調試和錯誤處理
- 十三自定義轉換
- 十四用 animate() 自定義動畫
- 十五集成網絡棧
- 十六用 Module 自定義
- 十七Module 實例:接受自簽名證書的 HTTPS
- 十八Module 實例:自定義緩存
- 十九Module 實例:用自定義尺寸優化加載的圖片
- 二十動態使用 Model Loader
- 二十一如何旋轉圖像
- 二十二系列綜述