1.Glide的優(yōu)勢和劣勢or為什么選Glide
Glide優(yōu)勢
- Glide.with()能傳入activity戈泼,fragment等,可以和頁面的生命周期綁定赏僧,不至于大猛,頁面停止了,圖片還在加載
- Glide支持多種數(shù)據(jù)源 本地 網絡 uri assets
- Glide加載的圖片默認格式是RGB565淀零,相比ARGB8888內存占用減少一半挽绩,但圖片質量低了
- Glide不用擔心大圖oom驾中,它不會加載原圖唉堪,會根據(jù)imageview的大小而加載多大
- Glide緩存imageview大小的圖片模聋, picasso緩存原始圖片,當imageview大小調整了唠亚,Glide需要重新下載链方,再緩存,picasso不用重新下載灶搜,只需重新繪制祟蚀,一定程度上Glide加載比picasso快(時間換空間)
- Glide可以加載動態(tài)圖gif,可以播放本地視頻8盥簟G澳稹!>可骸P秸摺!
Glide劣勢
- Glide的包和方法數(shù)多
其他框架劣勢
- Fresco框架不好用布局文件要用drawees剿涮,配置麻煩,學習成本相對高一些攻人,體積很大
- Picasso.with()只能傳入context
- UIL沒有更新了
2.Glide 4.0+的使用
1)在module的build.gradle中添加依賴
repositories {
mavenCentral()
maven { url 'https://maven.google.com' }
}
dependencies {
compile 'com.github.bumptech.glide:glide:4.2.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
}
2)使用GlideApp
在Glide4.0之前使用Glide只需要
Glide.with(this)
.load(url)
.placeholder(R.mipmap.ic_launcher)
.into(iv);
但是在Glide4.0之后load(url)之后就不能調用.placeholder()等方法
查看4.0+的文檔發(fā)現(xiàn)需要通過GlideApp來調用一系列方法
GlideApp生成的方法:
①新建一個類繼承AppGlideModule
②類添加GlideModule
③Make Module
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
@GlideModule
public final class MyAppGlideModule extends AppGlideModule
{
//可以配置Glide
}
現(xiàn)在就可以使用GlideApp了
GlideApp.with(this)
.load(url)//資源路徑
.placeholder(R.mipmap.ic_launcher)//占位圖
.error(R.mipmap.ic_launcher)//加載失敗
.into(iv);
注意:需要添加網絡權限取试!
3.Glide 4.0+圖片轉換
在開發(fā)中,圖片經常要做一些變化怀吻,比如剪裁指定形狀瞬浓,圓角(可以使用CircleImageView),這邊推薦一個Glide的圖片轉換庫
https://github.com/wasabeef/glide-transformations
實現(xiàn)圓角效果如下:
還有一些變化蓬坡,可以試試
小坑
添加了占位圖.placeholder(R.mipmap.ic_launcher)
如果ImageView設置了warp_content占位圖會影響加載圖的大小
所以猿棉,ImageView最好設置固定大小