在开发过程中我们经常会使用到一些图片。开源的图片库有Glide,Picasso 等。本期就简单介绍下Glide开源库。
使用
第一步 compile ‘com.github.bumptech.glide:glide:4.5.0’ (引入依赖库)
第二步 Glide.with(context).load(Url).into(targetImageView);(展示)
封装代码
public class GlideUtils {
/**
* 圆角图片加载
* @param context 上下文
* @param imageView 图片显示控件
* @param url 图片链接
* @param defaultImage 默认占位图片
* @param errorImage 加载失败后图片
* @param radius 图片圆角半径
* @return
*/
public static void load(Context context, ImageView imageView, String url, int defaultImage,
int errorImage , int radius){
//RequestOptions 设置请求参数,通过apply方法设置
RequestOptions options = new RequestOptions()
// 但不保证所有图片都按序加载
// 枚举Priority.IMMEDIATE,Priority.HIGH,Priority.NORMAL,Priority.LOW
// 默认为Priority.NORMAL
// 如果没设置fallback,model为空时将显示error的Drawable,
// 如果error的Drawable也没设置,就显示placeholder的Drawable
.priority(Priority.NORMAL) //指定加载的优先级,优先级越高越优先加载,
.placeholder(defaultImage)
.error(errorImage)
// 缓存原始数据
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.centerCrop()
.transform(new CornersTranform(context, radius));
// 图片加载库采用Glide框架
Glide.with(context).load(url).apply(options)
.transition(new DrawableTransitionOptions().crossFade())
.into(imageView);
}
/**
* 加载resoures下的文件
* @param context
* @param imageView
* @param url
* @param defaultImage
* @param errorImage
*/
public static void loadImgId(Context context, final ImageView imageView, int url, int defaultImage,
int errorImage, int radius) {
RequestOptions options = new RequestOptions()
// 但不保证所有图片都按序加载
// 枚举Priority.IMMEDIATE,Priority.HIGH,Priority.NORMAL,Priority.LOW
// 默认为Priority.NORMAL
// 如果没设置fallback,model为空时将显示error的Drawable,
// 如果error的Drawable也没设置,就显示placeholder的Drawable
.priority(Priority.NORMAL) //指定加载的优先级,优先级越高越优先加载,
.placeholder(defaultImage)
.error(errorImage)
// 缓存原始数据
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.centerCrop()
.transform(new CornersTranform(context, radius));
// 图片加载库采用Glide框架
Glide.with(context).load(url)
.apply(options)
.transition(new DrawableTransitionOptions().crossFade())
.into(imageView);
}
/**
* 加载圆形头像
* @param context
* @param imageView
* @param url
*/
public static void loadCircle(Context context, final ImageView imageView, String url ) {
RequestOptions options = new RequestOptions()
// 但不保证所有图片都按序加载
// 枚举Priority.IMMEDIATE,Priority.HIGH,Priority.NORMAL,Priority.LOW
// 默认为Priority.NORMAL
// 如果没设置fallback,model为空时将显示error的Drawable,
// 如果error的Drawable也没设置,就显示placeholder的Drawable
.priority(Priority.NORMAL) //指定加载的优先级,优先级越高越优先加载,
.dontAnimate() //防止设置placeholder导致第一次不显示网络图片,只显示默认图片的问题
.placeholder(R.drawable.toast_y)
.error(R.drawable.toast_n)
// 缓存原始数据
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.centerCrop()
.transform(new GlideCircleTransform(context));
// 图片加载库采用Glide框架
Glide.with(context).load(url)
.apply(options)
.transition(new DrawableTransitionOptions().crossFade())
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
imageView.setImageDrawable(resource);
}
});
}
}
使用
GlideUtils.loadCircle(getActivity(), image, "你的URL");