Glide探究一
2017-08-28 本文已影响0人
coke613
Glide基本使用:
添加依赖:compile 'com.github.bumptech.glide:glide:3.5.2'
三部曲:
①with()
②load()
③into()
Glide.with(MainActivity.this).load(imageUrl).into(ivPicture);
Glide.with():确定图片生命周期
1.pngGlide.with()方法是用于创建一个加载图片的实例RequestManager,该方法的参数可以是Activity,Fragment,所以在使用的时候直接通过this调用即可。如果在调用的时候既没有在Activity也没有在Fragment中,此时我们可以直接传入Application,获取上下文。传入到with方法中。需要注意的是传入with参数的不同,会直接影响到图片的生命周期。如果直接使用的是Activity或者Fragment,当界面销毁的时候,图片也会跟着销毁。如果传入的是ApplicationContext,那么只有退出应用程序的时候,图片才会停止。
load():指定加载图片资源
该方法在RequestManager类中,是一个重载函数。
省略部分代码~~~~~~
public DrawableTypeRequest<String> load(String string) {
return (DrawableTypeRequest<String>) fromString().load(string);
}
public DrawableTypeRequest<Uri> load(Uri uri) {
return (DrawableTypeRequest<Uri>) fromUri().load(uri);
}
public DrawableTypeRequest<File> load(File file) {
return (DrawableTypeRequest<File>) fromFile().load(file);
}
public DrawableTypeRequest<Integer> load(Integer resourceId) {
return (DrawableTypeRequest<Integer>) fromResource().load(resourceId);
}
public DrawableTypeRequest<byte[]> load(byte[] model) {
return (DrawableTypeRequest<byte[]>) fromBytes().load(model);
}
public <T> DrawableTypeRequest<T> load(T model) {
return (DrawableTypeRequest<T>) loadGeneric(getSafeClass(model)).load(model);
}
...............
该方法用于加载指定的图片资源,该资源可以是本地图片,网络图片,或者是字节数组,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():指定加载图片的view
让图片显示在哪个ImageView上,把这个ImageView的实例传进去就可以了。
Glide占位符:
API:
· 占位符
Glide.with(this)
.load(imageUrl)
.asBitmap()
.placeholder(R.drawable.a) //占位符
.into(ivPicture);
· 异常占位符
Glide.with(this)
.load(imageUrl)
.asBitmap()
.placeholder(R.drawable.a) //占位符
.error(R.drawable.b) //加载不存在的链接,异常占位符
.into(ivPicture);
· 关于缓存
Glide.with(this)
.load(imageUrl)
.placeholder(R.drawable.a) //占位符
.diskCacheStrategy(DiskCacheStrategy.NONE)//不需要缓存存在
//DiskCacheStrategy.ALL 保留所有的缓存
//DiskCacheStrategy.SOURCE 保留原始数据的缓存
//DiskCacheStrategy.RESULT 保留最后数据的缓存
.error(R.drawable.b) //加载不存在的链接,显示的图片,异常占位符
.into(ivPicture);
· 关于静态&&动态图片
① 如果图片是一张动态图的话,调用asBitmap函数,会将动图加载成静态图,而是第一帧。
② 如果图片是一张静态图的话,调用asGif函数,不会转换成动态图,而是加载失败,显示异 常占位符。
· 设置图片大小
Glide.with(this)
.load(imageUrl)
.override(300,200) //指定图片的大小,这里不管你设置iv的大小
.into(ivPicture);