Glide因为其自身功能强大并且简单易用深受广大开发者喜欢,绝大部分Android开发者都使用它来加载图片,本篇将详细介绍Glide图片加载库的使用。
1、最简单的加载本地的资源文件中的图片。
java
Glide.with(mActivity).load(R.drawable.station).into(image);
只需要三个方法:
1.1、with(参数) 传入的参数可以是Activity/Fragment/Context都可以,分别是不同的重载方法;
1.2、 load(参数) 这里传入图片路径,看代码它是可以传入任何类型的,但一般开发中就是本地资源文件或者网络图片地址、手机文
java
public RequestBuilder<Drawable> load(@Nullable Object model) {
return asDrawable().load(model);
}
件夹内图片路径以及Bitmap、Drawable和文件流信息都可以。
补充一句人家敢接收任何地址就是给兜底了,大不了什么都加载不出来没其他影响。
1.3、.into(image); 这里就是要传入我们显示图片的ImageView控件。
2、向前进阶一步走
2.1更复杂一些配置
如果加载失败了我也不想这块区域是空白,能不能设置一个错误提示图啊,当然可以error(R.mipmap.errorimg ); 如果网络加载慢我不想用户盯着空白半分钟能不能先设置一个展位图等真正图片加载完以后再显示,当然可以placeholder(R.mipmap.ic_launcher );图片太大了我的ImageView比较小,能不能设置图片的显示大小啊,当然可以override(300,300);图片图片质量太高了很吃内存我这也不需要这么高质量,能不能设置图片的质量啊,当然可以priority(Priority.HIGH );有些图片加载一次真的很耗时能不能设置将图片存文件下次复用啊,当然可以diskCacheStrategy(DiskCacheStrategy.RESOURCE )。
还可以通过listener(@Nullable RequestListener<TranscodeType> requestListener) 监听图片加载情况,他有两个回调方法分别是onResourceReady 和onLoadFailed ,onResourceReady 是当当图片资源成功加载并准备好时触发,可在此回调中执行后续操作;onLoadFailed 当图片加载过程中发生异常时触发,都是return一个布尔类型:返回true表示事件已处理,阻止Glide后续行为(如显示错误占位图),返回false则允许Glide继续执行默认逻辑。onResourceReady最终会通过Handler发送MSG_COMPLETE消息通知主线程加载图片,而onLoadFailed会触发错误处理流程返回错误信息。
java
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.mipmap.ic_launcher).error(R.mipmap.round_spinner_fade_00);
requestOptions.apply(requestOptions);
//设置宽高大小
requestOptions.override(300,300);
requestOptions.priority(Priority.HIGH);
requestOptions.diskCacheStrategy(DiskCacheStrategy.RESOURCE);
Glide.with(mActivity)
.load(R.mipmap.pengyuyan)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
Log.e("TAG", "onLoadFailed: "+" e="+e.getMessage() +" model="+model.toString()+" target="+target+" isFirstResource="+isFirstResource );
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
})
.into(image);
2.2 加载gif
Glide的一个优势是它可以加载git格式
java
Glide.with(mActivity).asGif().load(R.drawable.station).into(image);
2.3 加载网络资源时设置请求头header
java
GlideUrl url = new GlideUrl("https:bai.com/phooto.png",new LazyHeaders.Builder().addHeader("cookie",cookieStr).build());
Glide.with(mActivity).load(url).into(image);
2.4 加载文件流
此处以assets中图片为例
java
try {
//加载文件-从Assets文件夹
InputStream inputStream = getAssets().open("pengyuyan.webp");
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2;
opts.inPurgeable = true;
opts.inInputShareable = true;
opts.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, opts);
inputStream.close();
Glide.with(mActivity).load(bitmap).into(image);
} catch (IOException e) {
e.printStackTrace();
}
本文分析基于Glide 4.0.0。
才疏学浅,如有错误,欢迎指正,多谢。