谷歌官方支持的图像加载库,
导入依赖如下,
// https://mvnrepository.com/artifact/com.github.bumptech.glide/glide
implementation group: 'com.github.bumptech.glide', name: 'glide', version: '4.12.0'
调用Glide.with方法传入context
public class GlideActivity extends AppCompatActivity {
private static final String TAG = "GlideActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_glide);
ImageView imageView = findViewById(R.id.glide_image);
Observable.create((Observable.OnSubscribe<RequestBuilder<Drawable>>) subscriber -> {
// io 线程请求网络
RequestBuilder<Drawable> load = Glide.with(GlideActivity.this)
.load("https://hbimg.huabanimg.com/291e463711d1af5ee96bf19aa52aa3d8e1a8fe5b11a51d-af7b7F_fw1200")
//图片加载中,显示的图片
.placeholder(R.drawable.ic_launcher_foreground)
//图片加载失败的预留图
.error(R.drawable.ic_launcher_background);
subscriber.onNext(load);
}).observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(drawableRequestBuilder -> {
//主线程更新ui
drawableRequestBuilder.into(imageView);
});
}
}
(1)缩略图
Glide 为缩略图提供了2种不同的加载方式,比较简单的方式是调用 thumbnail() 方法,参数是 float 类型,作为其倍数大小;
Glide.with( context )
.load( url )
.thumbnail( 0.2f )
.into( imageView );
第二种加载方式通过request方式,
// setup Glide request without the into() method
DrawableRequestBuilder<String> thumbnailRequest = Glide.with( context ).load( url );
// pass the request as a a parameter to the thumbnail request
Glide.with( context )
.load( url )
.thumbnail( thumbnailRequest )
.into( imageView );
(2)动画开关
动画效果可以让图片加载变得更加的平滑,crossFade() 方法强制开启 Glide 默认的图片淡出淡入动画,当前版本3.7.0是默认开启的。crossFade() 还有一个重载方法 crossFade(int duration)。可以控制动画的持续时间,单位ms。动画默认的持续时间是300ms。既然可以添加动画,那肯定就可以设置没有任何淡出淡入效果,调用 dontAnimate()
Glide.with(context)
.load(url)
.crossFade()//或者使用 dontAnimate() 关闭动画
.placeholder(R.drawable.place_image)
.error(R.drawable.error_image)
.into(imageView);
(3)图片裁剪
使用 override(width,height) 方法,在图片显示到 ImageView 之前,重新改变图片大小。
Glide.with(context)
.load(url)
.override(width,height)//这里的单位是px
.into(imageView);
(4)图片缓存
默认功能,通过以下代码强制关闭缓存,
Glide.with(context)
.load(url)
.skipMemoryCache(true)
.diskCacheStrategy( DiskCacheStrategy.NONE )
.into(imageView);
(5)图片优先级加载
//四种优先级
//Priority.LOW
//Priority.NORMAL
//Priority.HIGH
//Priority.IMMEDIAT
//设置 HIGH 优先级
Glide.with( context )
.load( highPriorityImageUrl )
.priority (Priority.HIGH )
.into( imageView );
//设置 LOW 优先级
Glide.with( context )
.load( lowPriorityImageUrl )
.priority( Priority.LOW )
.into( imageView );
(6)gif图显示
Glide.with( context )
.load( gifUrl )
.asGif()
.error( R.drawable.error )
.into( imageView );
(7)显示gif第一帧
Glide.with( context )
.load( gifUrl )
.asBitmap()
.error( R.drawable.error )
.into( imageView );
(8)本地视频显示
String filePath = "/storrage/emulated/0/Pictures/video.mp4";
Glide.with( context )
.load( Uri.fromFile( new File( filePath ) ) )
.into( imageView );