Glide的使用和分析
2017-11-23 本文已影响7人
Aron1001
用法
- 基本使用
Glide.with(this).load(url).into(imageView)
with()方法接收的参数可以是context,fragment或者activity,当在activity或者fragment中调用时可以直接传入this,如果既不在activity又不在fragment中,我们可以传入ApplicationContext,值得注意的是,传入this与ApplicationConext的生命周期是有区别的,this会在activity或者fragment销毁时停止加载图片,而ApplicationContex则只有当应用被杀掉的时候才会停止加载。
load()方法用于加载指定的图片资源,可以是网络图片url,本地图片file,应用资源,二进制流,Uri对象等。
// 加载本地图片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);
// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);
// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);
// 加载Uri对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);
into()方法比较简单,接收的参数就是指图片要加载到的控件。
- 占位图
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.into(imageView);
Glide有非常强大的缓存功能,加载完的图片会缓存下来,下次会直接到缓存中取,因而加载速度会很快,占位图会来不及显示。如果不想使用缓存可以这样写:
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
异常占位图
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
- 指定加载图片格式
Glide有一个强大的功能,可以加载Gif图片,这点是Picasso不具备的。
Glide加载git图片并不需要额外的代码,Glide会自动判断图片的格式。
如果想指定加载静态图片:
Glide.with(this)
.load(url)
.asBitmap()
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
asBitmap()表示只允许加载静态图片。
类似的,如果想指定加载动态图片,使用asGif(),如果图片是静态图片,指定加载动态,会显示异常图片。
- 指定图片大小
Glide会自动判断ImageView的大小,用多少加载多少,帮我们节省内存,如果有需要指定大小的需求,Glide也提供了相应的方法:
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.override(100, 100)
.into(imageView);