一、简介
glide库非常强大,能够加载gif图片就是其中之一,今天,我们就一起看一看如何用gide4加载gif动态图片。
二、使用方法
1,加载gif动画,同加载普通图片一样,使用如下代码就可以加载gif动画
Glide.with(this).load(...).into(...)
例如:
ImageView imageView = findViewById(R.id.image_view); Glide.with(this) // 加载网络图片 .load("https://image.niwoxuexi.com/blog/content/5c0d4b1972-loading.gif") // 加载drawable // .load(R.drawable.loading) // 加载assets资源的loading.gif 图片 // .load("file:///android_asset/loading.gif") .into(imageView);
效果如上图所示,也就是说,不管我们传入的是一张普通图片,还是一张GIF图片,Glide都会自动进行判断,并且可以正确地把它解析并展示出来。
但是如果我想指定加载格式该怎么办呢?就比如说,我希望加载的这张图必须是一张静态图片,我不需要Glide自动帮我判断它到底是静图还是GIF图。
想实现这个功能仍然非常简单,我们只需要再串接一个新的方法就可以了,如下所示:
2, 指定指定加载格式
ImageView imageView = findViewById(R.id.image_view); /** * 在Glide 4中是先asBitmap() 再load()的 * 如果写错了顺序就肯定会报错了 */ Glide.with(this) .asBitmap() //强制指定加载静态图片 // .asGif() //强制指定加载动态图片 // .asFile() //强制指定文件格式的加载 // .asDrawable() //强制指定Drawable格式的加载 .load("https://image.niwoxuexi.com/blog/content/5c0d4b1972-loading.gif") .into(imageView);
可以看到,这里在with()方法的后面加入了一个asBitmap()方法,这个方法的意思就是说这里只允许加载静态图片,不需要Glide去帮我们自动进行图片格式的判断了。如果你传入的还是一张GIF图的话,Glide会展示这张GIF图的第一帧,而不会去播放它。
注意:如果加载的图片不是gif,则asGif()会报错, 当然,asGif()不写也是可以正常加载的。
3, 最后上一段先对完整的代码
private void loadGif(ImageView imageView){ RequestOptions options = new RequestOptions() .placeholder(R.drawable.holder) .error(R.drawable.error); Glide.with(this) .load("https://image.niwoxuexi.com/blog/content/5c0d4b1972-loading.gif") .apply(options) .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; } }) .into(imageView); }