目录
加载图片
Glide.with(this).load(url).into(imageView);
调用Glide.with()方法用于创建一个加载图片的实例。with()方法可以接收Context、Activity、Fragment类型的参数,选择范围广,with()方法中传入的实例会决定Glide加载图片的生命周期,如果传入的是Activity或者Fragment的实例,那么当这个Activity或Fragment被销毁的时候,图片也会停止;如果传入的是ApplicationContext,那么只有当应用程序被杀掉的时候,图片加载才会停止。
调用.load()方法用于指定待加载的图片资源。Glide支持加载各种各样的图片资源,包括网络图片、本地图片、应用资源、二进制流、URL对象等,因此load()方法也有很多个方法重载:
// 加载本地图片
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);
占位图
Glide占位图功能的使用方法:
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.into(imageView);
Glide异常占位图功能的使用方法:
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
指定图片格式
Glide只允许加载静态图片代码,加入一个asBitmap()方法:
Glide.with(this)
.load(url)
.asBitmap()
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
Glide强制指定加载动态图片,调用了asGif():
Glide.with(this)
.load(url)
.asGif()
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
指定图片大小
常见的加载图片造成的内存浪费:例如一张图片的尺寸是1000*1000像素,但是ImageView只有200*200像素,如果不对图片进行任何压缩就直接读取到内存中,这就属于内存浪费。
而使用Glide,就完全不用担心图片内存浪费,甚至是内存溢出的问题。Glide从来都不会直接将图片的完整尺寸全部加载到内存中,而是用多少加载多少。Glide会自动判断ImageView的大小,然后只将图片像素大小加载到内存当中,帮助节省内存开支。
绝大多数情况下都不需要指定图片大小,Glide会自动根据ImageView的大小来决定图片的大小。
不过有需要也可以给图片指定一个固定的大小:
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.override(100, 100)
.into(imageView);
如上面使用override()方法指定了一个图片的尺寸。