1在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫Glide的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。现在这款框架非常的火,再次提供给大家使用流程。
1 导入 简单粗暴
2 进行封装
packagecom.fufeng.util;
importandroid.content.Context;
importandroid.widget.ImageView;
importcom.bumptech.glide.Glide;
importcom.bumptech.glide.load.resource.drawable.GlideDrawable;
importcom.bumptech.glide.request.RequestListener;
importjp.wasabeef.glide.transformations.BlurTransformation;
/**
* Glide图片加载工具类
* Created by limoran on 2017/3/14.
*/
public classGlideUtils {
/**
*默认加载图片
*@parammContext
*@parampath
*@paramimageView
*/
public static voidloadImageView(Context mContext, String path, ImageView imageView){
Glide.with(mContext).load(path).into(imageView);
}
/**
*带默认图片的加载方式
*@parammContext
*@parampath
*@parammImageView
*@paramlodingImage
*@paramerrorImageView
*/
public static voidloadImageView(Context mContext, String path, ImageView mImageView,intlodingImage,interrorImageView) {
Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView);
}
/**
*加载指定大小的图片
*@parammContext
*@parampath
*@paramwidth
*@paramheight
*@parammImageView
*/
public static voidloadImageView(Context mContext, String path,intwidth,intheight, ImageView mImageView) {
Glide.with(mContext).load(path).override(width, height).into(mImageView);
}
/**
*加载gif图
*@parammContext
*@parampath
*@parammImageView
*/
public static voidloadImageViewGif(Context mContext, String path, ImageView mImageView) {
Glide.with(mContext).load(path).asGif().into(mImageView);
}
/**
*加载crop模式
*@parammContext
*@parampath
*@parammImageView
*/
public static voidloadImageViewCrop(Context mContext, String path, ImageView mImageView) {
Glide.with(mContext).load(path).centerCrop().into(mImageView);
}
/**
*图片加载带监听接口 方便监听异常来源
*@parammContext
*@parampath
*@parammImageView
*@paramrequstlistener
*/
public static voidloadImageView(Context mContext, String path, ImageView mImageView, RequestListener requstlistener) {
Glide.with(mContext).load(path).listener(requstlistener).into(mImageView);
}
/**
*清理图片内存缓存
*@parammContext
*/
public static voidGuideClearMemory(Context mContext) {
//清理内存缓存 可以在UI主线程中进行
Glide.get(mContext).clearMemory();
}
/**
*模糊图片
*@parammContext
*@parampath
*@parammImageView
*/
public static voidfuzzyLoadImageView(Context mContext,String path,ImageView mImageView){
Glide.with(mContext)
.load(path)
.bitmapTransform(newBlurTransformation(mContext,25,4))// “23”:设置模糊度(在0.0到25.0之间),默认”25";"4":图片缩放比例,默认“1”。
.into(mImageView);
}
}
这个是个封装好的实体类,以上十几款比较常用的加载方式 如加载固定大小图片,加载圆形图片(他自己给你裁剪),加载成毛玻璃央视的,支持的很多,还有一些动态图,非常的多。具体需求可以去官方查看指定的文档,加载图片的时候只需要传入指定的imageview的对象,mcontext,还有图片路径即可,非常简单。还有如果是加载高清长图也可以用Glide非常的简单,不过需要你把图片先要下载到本地再去进行glide加载,如下是加载高清长图的过程,最后给大家推荐一个高清长图控件 com.davemorrissey.labs:subsampling-scale-image-view:3.5.0,导入即可使用,具体请百度。
finalFile downDir = Environment.getExternalStorageDirectory();
//使用Glide下载图片,保存到本地
Glide.with(this)
.load(imageUrl)
.asBitmap()
.into(newSimpleTarget() {
@Override
public voidonResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
File file =newFile(downDir,"/Glide/");
if(!file.exists()) {
try{
file.createNewFile();
}catch(IOException e) {
e.printStackTrace();
}
}
FileOutputStream fout =null;
try{
//保存图片
fout =newFileOutputStream(file);
resource.compress(Bitmap.CompressFormat.JPEG,100, fout);
//将保存的地址给SubsamplingScaleImageView,这里注意设置ImageViewState
scaleImageView.setImage(ImageSource.uri(file.getAbsolutePath()),newImageViewState(0.5F,newPointF(0,0),0));
}catch(FileNotFoundException e) {
e.printStackTrace();
}finally{
try{
if(fout !=null) fout.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
});