在项目实战中,有需求对图片做显示处理,这里显示图片应用的是glide,由于功能是在app里面的,就不方便把效果展示出来了
implementation 'com.github.bumptech.glide:glide:4.9.0'
在做项目的时候,不能一味的cv,也要多方位考虑,这样自己才能有所提升。
这里在做图片处理的时候,由于图片地址是后台返回的。作为移动开发,我们无法确认图片什么时候加载成功?什么时候加载失败?
这里优化很简单,无非就是网络加载成功就显示图片;如果网络加载失败,给它设置一张默认照片
方式一:
ImageView image;
if (viewHolder.image.getDrawable() == null) {
Log.e("图片地址 >>>>", "getView: 图片加载失败");
viewHolder.image.setBackground(context.getResources().getDrawable(R.drawable.order_img));
} else {
Log.e("图片地址 >>>>", "getView: 图片加载成功");
Glide.with(context).load(img).into(viewHolder.image);
}
方式二:
/**
* 异常占位图
* 如果因为某些异常情况导致图片加载失败,
* 比如说手机网络信号不好,这个时候就显示这张异常占位图
*/
Glide.with(context)
.load(img)
.placeholder(R.drawable.order_img)//加载成功前显示的照片
.dontAnimate()
.error(R.drawable.order_img)//异常显示的照片
.into(viewHolder.image);
方式三:
public class GlideUtils {
private static final String TAG = GlideUtils.class.getSimpleName();
public static void showBlurTransformation(Context context, ImageView imageView ,Uri val){
if(val==null){return;}
try {
Glide.with(context)
.load(val)
.apply(RequestOptions.bitmapTransform(new GlideBlurformation(context)))
.apply(new RequestOptions().centerCrop())
.into(imageView);
} catch (Exception e) {
e.printStackTrace();
FinLog.e(TAG, "Glide Utils Error="+e.getMessage());
} catch (NoSuchMethodError noSuchMethodError){
noSuchMethodError.printStackTrace();
FinLog.e(TAG, "Glide NoSuchMethodError = "+noSuchMethodError.getMessage());
}
}
public static void showRemotePortrait(Context context, ImageView imageView ,Uri val){
RequestOptions requestOptions=new RequestOptions();
requestOptions.transform(new GlideRoundTransform());
requestOptions.priority(Priority.HIGH);
requestOptions.placeholder(R.drawable.order_img);
if(val==null){
Glide.with(context)
.load(R.drawable.order_img)
.apply(requestOptions)
.into(imageView);
}else{
Glide.with(context)
.load(val)
.apply(requestOptions)
.into(imageView);
}
}
}
调用此GlideUtils 工具类
if(null != userInfo && null != userInfo.getPortraitUri())
GlideUtils.showBlurTransformation(SingleActivity.this, img, null != userInfo ? userInfo.getPortraitUri() : null);
}
- order_img