利用glide加载圆形图片和gif图片

时间:2021-03-03 09:18:03

ImageManager mImageManager = new ImageManager(this);
参数说明 1 链接 或者 图片id 2 要设置的图片 3占位图片id
mImageManager.loadUrlImage_common("url", 要设置的图片,0);

下面是工具类


/**
* Glide 图片加载
*/
public class ImageManager {
private Context mContext;
public static final String ANDROID_RESOURCE = "android.resource://";
public static final String FOREWARD_SLASH = "/";

public ImageManager(Context context) {
this.mContext = context;
}

/**
* 将资源ID转为Uri
*
* @param resourceId
* @return
*/
public Uri resourceIdToUri(int resourceId) {
return Uri.parse(ANDROID_RESOURCE + mContext.getPackageName() + FOREWARD_SLASH + resourceId);
}

/**
* 加载网络图片
*
* @param url
* @param imageView
*/
public void loadUrlImage(String url, ImageView imageView) {
Glide.with(mContext)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)//缓存所有版本的图像(默认行为)
.placeholder(R.drawable.bg_home)
.error(R.drawable.bg_home)
.crossFade()
.into(imageView);
}

/**
*
* @param url 图片url
* @param imageView 图片控件
* @param drawableId 加载过程中的图片,填写格式:R.drawable.bg_home 如果为0,则没有加载中图片
*/
public void loadUrlImage_common(String url, ImageView imageView,int drawableId) {
if (drawableId == 0){
Glide.with(mContext)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)//缓存所有版本的图像(默认行为)
.centerCrop()
.crossFade()
.into(imageView);
}else {
Glide.with(mContext)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)//缓存所有版本的图像(默认行为)
.centerCrop()
.placeholder(drawableId)
.crossFade()
.into(imageView);
}

}

/**
* 加载drawable图片
*
* @param resId
* @param imageView
*/
public void loadResImage(int resId, ImageView imageView) {
Glide.with(mContext)
.load(resourceIdToUri(resId))
.placeholder(R.color.colorPrimary)
.error(R.color.colorPrimary)
.crossFade()
.into(imageView);
}

/**
* 加载本地图片
*
* @param path
* @param imageView
*/
public void loadLocalImage(String path, ImageView imageView) {
Glide.with(mContext)
.load("file://" + path)
.placeholder(R.color.colorPrimary)
.error(R.color.colorPrimary)
.crossFade()
.into(imageView);
}

/**
* 加载网络圆型图片
*
* @param url
* @param imageView
*/
public void loadCircleImage(String url, ImageView imageView) {
Glide.with(mContext)
.load(url)
.placeholder(R.color.colorPrimary)
.error(R.color.colorPrimary)
.crossFade()
.transform(new GlideCircleTransform(mContext))
.into(imageView);
}

/**
* 加载drawable圆型图片
*
* @param resId 资源文件
* @param imageView
*/
public void loadCircleResImage(int resId, ImageView imageView) {
Glide.with(mContext)
.load(resourceIdToUri(resId))
.placeholder(R.color.colorPrimary)
.error(R.color.colorPrimary)
.crossFade()
.transform(new GlideCircleTransform(mContext))
.into(imageView);
}

/**
* 加载本地圆型图片
*
* @param path 本地文件路劲
* @param imageView
*/
public void loadCircleLocalImage(String path, ImageView imageView) {
Glide.with(mContext)
.load("file://" + path)
.placeholder(R.color.colorPrimary)
.error(R.color.colorPrimary)
.crossFade()
.transform(new GlideCircleTransform(mContext))
.into(imageView);
}
}

就是这么简单 有时候会加载不出来 gif 图片 下面是解决方案

如果你是studio的gradle用的是离线的那么就会出现即使按照上面的方法做了 也加载不出来

然而更换  官网最新的版本为4.5 (com.github.bumptech.glide:glide:4.5.0)然而之前老的项目中 用的却是3.7 导致如果换成新的版本 确需要更改为 26 和27 版本  并且之前的glide加载的方法等等都要重新变更 很是麻烦

compileSdkVersion 26
buildToolsVersion '27.0.2'
然而就算更改完的话老的项目却又会出现很多问题 那么如何利用3.7来实现呢 其实方法很简单

就是将你现有的工程中的 3.7 先删除掉然后clean 一下你的工程将之前老版本的 glide库清除掉 然后在重新下载

compile 'com.github.bumptech.glide:glide:3.7.0'
在试一下 就可以完美加载gif 图片了

安卓开发交流群: 595856941