Glide入門教程
原文:Getting Started & Simple Loading
作者:Norman Peitek
翻譯:Dexter0218
Glide和Picasso一樣,是一個(gè)優(yōu)秀的圖片加載工具庫。它可以支持多種圖片數(shù)據(jù)源,在對(duì)圖片加載并顯示時(shí),能較好的處理好緩存、保持較低的內(nèi)存占用。目前已經(jīng)被Google用于其官方應(yīng)用中。在這一系列教程中,我們將會(huì)通過學(xué)習(xí)Glide如何使用,探索Glide相對(duì)于Picasso的區(qū)別和改進(jìn)。
Glide 系列概覽
- 入門簡介
- 高級(jí)加載
- 適配器(ListView, GridView)
- 占位圖& 淡入淡出動(dòng)畫
- 圖片大小 & 縮放
- 播放GIF & 視頻
- 緩存基礎(chǔ)
- 請(qǐng)求優(yōu)先級(jí)
- 縮略圖
- 回調(diào):定制view中使用SimpleTarget和ViewTarget
- 通知欄和桌面小控件的圖片加載
- 異常: 調(diào)試和報(bào)錯(cuò)處理
- 自定義變換
- 用animate()定制動(dòng)畫
- 整合網(wǎng)絡(luò)協(xié)議棧
- 用Modules定制Glide
- Glide Module 案例: 接受自簽名HTTPS證書
- Glide Module 案例: 自定義緩存
- Glide Module 案例: 通過加載自定義大小圖片優(yōu)化
- 動(dòng)態(tài)使用 Model Loaders
- 如何旋轉(zhuǎn)圖片
- 系列綜述
為什么要使用Glide?
有Android開發(fā)經(jīng)驗(yàn)的程序員可以跳過這一節(jié),但是對(duì)于新手,應(yīng)當(dāng)弄明白為什么你要使用Glide*來代替你自己的實(shí)現(xiàn)。
Android在使用圖片的時(shí)候是相當(dāng)麻煩的,因?yàn)樾枰粋€(gè)像素一個(gè)像素地加載這些圖片到內(nèi)存。一個(gè)中端手機(jī)所拍攝的一張照片有2592×1936(5百萬)像素,這會(huì)占用大概19M內(nèi)存。如果你再加上各種好壞不一的網(wǎng)絡(luò)下的圖片請(qǐng)求,同時(shí)要處理緩存、圖片加載等問題,焦頭爛額。如果你這時(shí)候使用了一個(gè)像Glide一樣經(jīng)過不斷優(yōu)化和嚴(yán)格測試的圖片處理庫,你會(huì)慶幸你節(jié)省了大量的時(shí)間,同時(shí)也避免了很多頭疼的問題。
在這一系列教程中,我們會(huì)學(xué)習(xí)Glide的許多特性。先大概了解一下這篇列出的大綱,并想一下你是否真想要再實(shí)際開發(fā)中自己實(shí)現(xiàn)這些特性。
* —或者是其他的圖片處理庫,如 Picasso、 ION等等。
添加Glide到你的設(shè)置中
多么希望我們已經(jīng)成功說服你使用一個(gè)庫去處理你的圖片加載請(qǐng)求。如果你想要了解一下Glide,這個(gè)教程會(huì)對(duì)你有幫助!
首先,添加Glide到你的工程依賴?yán)铮刂贡疚膶懽鲿r(shí),最新的Glide版本是3.7.0.
Gradle
和大多數(shù)依賴庫一樣,在Gradle項(xiàng)目中只需要在build.gradle中添加一行:
compile 'com.github.bumptech.glide:glide:3.7.0'
Maven
Glide也支持 Maven項(xiàng)目:
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>glide</artifactId>
<version>3.7.0</version>
<type>aar</type>
</dependency>
第一次嘗試:從一個(gè) URL加載圖片
和Picasso一樣,Glide使用一個(gè)流接口(Fluent Interface)。用Glide完成一個(gè)完整的圖片加載功能請(qǐng)求,需要向其構(gòu)造器中至少傳入3個(gè)參數(shù),分別是:
-
with(Context context)
- Context是許多Android API需要調(diào)用的, Glide也不例外。這里Glide非常方便,你可以任意傳遞一個(gè)Activity或者Fragment對(duì)象,它都可以自動(dòng)提取出上下文。 -
load(String imageUrl)
- 這里傳入的是你要加載的圖片的URL,大多數(shù)情況下這個(gè)String類型的變量會(huì)鏈接到一個(gè)網(wǎng)絡(luò)圖片。 -
into(ImageView targetImageView)
- 將你所希望解析的圖片傳遞給所要顯示的ImageView。
理論上的解釋通常難以掌握,讓我們隨手舉個(gè)栗子:
ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
String internetUrl = "http://i.imgur.com/DvpvklR.png";
Glide
.with(context)
.load(internetUrl)
.into(targetImageView);
就上面這幾行!如果這個(gè)URL鏈接的圖片的確存在,并且你的ImageView可見,你將會(huì)在1~2秒見到這張圖片被加載。假如這張圖片不存在,Glide會(huì)回調(diào)相應(yīng)的出錯(cuò)接口(這個(gè)以后再具體介紹)。 你可能已經(jīng)被這個(gè)3行代碼說服,覺得這個(gè)Glide的確對(duì)你有用。不過,現(xiàn)在你所見到的,只是Glide全部特性里的冰山一角而已。
展望
在下一篇文章中,我們將要研究除了從網(wǎng)絡(luò)URL加載圖片外的其他方式,如從Android資源文件、本地文件和Uri加載圖片。