上節提到了 Android 開發當前主流的四種圖片加載框架,並介紹了一下 Picasso 的簡單使用, Picasso 雖然強大,但是存在一定的不足,比如不能加載 Gif 圖片,這嚴重影響了 App 的炫酷效果,下面介紹一下一個更強大、可以加載 Gif 圖片的框架 —— Glide。廢話不多說,進入主題:
一、在 Module 的 build.gradle 裏面添加依賴:
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
二、在程序中簡單調用:
Glide.with(this) // context 文本信息
.load(url) // 和 Picasso 一樣,圖片的 uri,可以放網絡鏈接,也可以放本地資源
.into(imageView); // ImageView 控件
三、和 Picasso 一樣可以設置加載中和加載出錯的圖片:
Glide.with(this) // context 文本信息
.load(url) // 和 Picasso 一樣,圖片的 uri,可以放網絡鏈接,也可以放本地資源
.placeholder(R.drawable.wait) // 加載中
.error(R.drawable.error) // 加載出錯
.into(imageView); // ImageView 控件
四、查看圖片加載出來是否變形,如果有,加上 dontAnimate() ,如:
Glide.with(this) // context 文本信息
.load(gifUrl) // 和 Picasso 一樣,圖片的 uri,可以放網絡鏈接,也可以放本地資源
.placeholder(R.drawable.wait) // 加載中
.error(R.drawable.error) // 加載出錯
.dontAnimate() // 防止圖片被拉伸
.into(imageView); // ImageView 控件
五、重點來了,加載 Gif 動圖,Glide4.9 新版本和以往的方式不同:
RequestOptions options = new RequestOptions()
.centerCrop()
.placeholder(R.drawable.wait)
.error(R.drawable.error)
.priority(Priority.HIGH) // 設置優先級
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC); // 設置緩存模式 ,自動
Glide.with(this)
.load(gifUrl)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
}).apply(options)
.into(imageView);
好了,本節就到這裏。如果文章對你有用,請點個贊!