-
Notifications
You must be signed in to change notification settings - Fork 503
12 配置ImageEngine,支持所有图片加载库(fresco除外)
桓谭生 edited this page Sep 25, 2019
·
2 revisions
为支持所有图片加载库(fresco除外)以及任意图片加载库的任意版本,EasyPhotos设计了图片加载引擎接口ImageEngine,大家可以通过对ImageEngine接口的实现来配置自己所使用的图片加载库。
ImageEngine接口文件如下:
/**
* 自定义图片加载方式
* Created by huan on 2018/1/15.
*/
public interface ImageEngine {
/**
* 加载图片到ImageView
*
* @param context 上下文
* @param uri 图片Uri
* @param imageView 加载到的ImageView
*/
//安卓10推荐uri,并且path的方式不再可用
void loadPhoto(Context context, Uri uri, ImageView imageView);
/**
* 加载gif动图图片到ImageView,gif动图不动
*
* @param context 上下文
* @param gifUri gif动图路径Uri
* @param imageView 加载到的ImageView
* <p>
* 备注:不支持动图显示的情况下可以不写
*/
//安卓10推荐uri,并且path的方式不再可用
void loadGifAsBitmap(Context context, Uri gifUri, ImageView imageView);
/**
* 加载gif动图到ImageView,gif动图动
*
* @param context 上下文
* @param gifUri gif动图路径Uri
* @param imageView 加载动图的ImageView
* <p>
* 备注:不支持动图显示的情况下可以不写
*/
//安卓10推荐uri,并且path的方式不再可用
void loadGif(Context context, Uri gifUri, ImageView imageView);
/**
* 获取图片加载框架中的缓存Bitmap
*
* @param context 上下文
* @param uri 图片路径
* @param width 图片宽度
* @param height 图片高度
* @return Bitmap
* @throws Exception 异常直接抛出,EasyPhotos内部处理
*/
//安卓10推荐uri,并且path的方式不再可用
Bitmap getCacheBitmap(Context context, Uri uri, int width, int height) throws Exception;
}
Glide4.x的实现方式:
/**
* Glide4.x的加载图片引擎实现,单例模式
* Glide4.x的缓存机制更加智能,已经达到无需配置的境界。如果使用Glide3.x,需要考虑缓存机制。
* Created by huan on 2018/1/15.
*/
public class GlideEngine implements ImageEngine {
//单例
private static GlideEngine instance = null;
//单例模式,私有构造方法
private GlideEngine() {
}
//获取单例
public static GlideEngine getInstance() {
if (null == instance) {
synchronized (GlideEngine.class) {
if (null == instance) {
instance = new GlideEngine();
}
}
}
return instance;
}
/**
* 加载图片到ImageView
*
* @param context 上下文
* @param uri 图片路径Uri
* @param imageView 加载到的ImageView
*/
//安卓10推荐uri,并且path的方式不再可用
@Override
public void loadPhoto(Context context, Uri uri, ImageView imageView) {
Glide.with(context).load(uri).transition(withCrossFade()).into(imageView);
}
/**
* 加载gif动图图片到ImageView,gif动图不动
*
* @param context 上下文
* @param gifUri gif动图路径Uri
* @param imageView 加载到的ImageView
* <p>
* 备注:不支持动图显示的情况下可以不写
*/
//安卓10推荐uri,并且path的方式不再可用
@Override
public void loadGifAsBitmap(Context context, Uri gifUri, ImageView imageView) {
Glide.with(context).asBitmap().load(gifUri).into(imageView);
}
/**
* 加载gif动图到ImageView,gif动图动
*
* @param context 上下文
* @param gifUri gif动图路径Uri
* @param imageView 加载动图的ImageView
* <p>
* 备注:不支持动图显示的情况下可以不写
*/
//安卓10推荐uri,并且path的方式不再可用
@Override
public void loadGif(Context context, Uri gifUri, ImageView imageView) {
Glide.with(context).asGif().load(gifUri).transition(withCrossFade()).into(imageView);
}
/**
* 获取图片加载框架中的缓存Bitmap
*
* @param context 上下文
* @param uri 图片路径
* @param width 图片宽度
* @param height 图片高度
* @return Bitmap
* @throws Exception 异常直接抛出,EasyPhotos内部处理
*/
//安卓10推荐uri,并且path的方式不再可用
@Override
public Bitmap getCacheBitmap(Context context, Uri uri, int width, int height) throws Exception {
return Glide.with(context).asBitmap().load(uri).submit(width, height).get();
}
}
EasyPhotos.createAlbum(this, false, GlideEngine.getInstance())//参数说明:上下文,是否显示相机按钮,[配置Glide为图片加载引擎]
.start(101);