安卓开发 Glide图片加载库的简单封装使用资料.docx
- 文档编号:24630530
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:19
- 大小:17.80KB
安卓开发 Glide图片加载库的简单封装使用资料.docx
《安卓开发 Glide图片加载库的简单封装使用资料.docx》由会员分享,可在线阅读,更多相关《安卓开发 Glide图片加载库的简单封装使用资料.docx(19页珍藏版)》请在冰豆网上搜索。
安卓开发Glide图片加载库的简单封装使用资料
[安卓开发]Glide图片加载库的简单封装使用
源码:
注释基本都有了
packagecom.minstone.util.Glide;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.graphics.Bitmap;
importandroid.graphics.drawable.Drawable;
importandroid.widget.ImageView;
importcom.bumptech.glide.DrawableTypeRequest;
importcom.bumptech.glide.Glide;
importcom.bumptech.glide.load.engine.DiskCacheStrategy;
importcom.bumptech.glide.load.resource.drawable.GlideDrawable;
importcom.bumptech.glide.load.resource.gif.GifDrawable;
importcom.bumptech.glide.request.RequestListener;
importcom.bumptech.glide.request.animation.GlideAnimation;
importcom.bumptech.glide.request.target.SimpleTarget;
importcom.bumptech.glide.request.target.Target;
importcom.minstone.mdoctor.R;
importcom.minstone.util.DensityUtil;
importcom.minstone.util.LogUtil;
importcom.minstone.view.CircleImageView;
importjava.io.File;
/**
*Createdbylitpon2016/8/6.
*/
publicabstractclassGlideUtils{
//图片加载监听器
publicabstractinterfaceImageLoadListener{
/**
*图片加载成功回调
*
*@paramuri图片url或资源id或文件
*@paramview目标载体,不传则为空
*@paramresource返回的资源,GlideDrawable或者Bitmap或者GifDrawable,ImageView.setImageRecourse设置
*/
/**
*图片加载异常返回
*
*@paramsource图片地址、File、资源id
*@parame异常信息
*/
}
publicabstractinterfaceImageLoadDetailListener{
/**
*图片加载成功回调
*
*@paramuri图片url或资源id或文件
*@paramview目标载体,不传则为空
*@paramresource返回的资源,GlideDrawable或者Bitmap或者GifDrawable,ImageView.setImageRecourse设置
*/
/**
*图片加载异常返回
*
*@paramsource图片地址、File、资源id
*@parame异常信息
*/
}
/**
*根据上下文和url获取Glide的DrawableTypeRequest
*
*@paramcontext上下文
*@paramurl图片连接
*@param
*@param
*@return返回DrawableTypeRequst
*/
privatestatic
DrawableTypeRequest
try{
if(contextinstanceofandroid.support.v4.app.Fragment){
type=Glide.with((android.support.v4.app.Fragment)context).load(url);
}elseif(contextinstanceofandroid.app.Fragment){
type=Glide.with((android.app.Fragment)context).load(url);
}elseif(contextinstanceofActivity){//包括FragmentActivity
type=Glide.with((Activity)context).load(url);
}elseif(contextinstanceofContext){
type=Glide.with((Context)context).load(url);
}
}catch(Exceptione){
e.printStackTrace();
LogUtil.e("Glide的Context错误");
}
returntype;
}
/**
*图片加载监听类
*
*@param
*@param
*@param
*/
privatestaticclassGlideListener
ImageLoadListenerimageLoadListener=null;
Zurl;
ImageViewimageView=null;
GlideListener(ImageLoadListenerimageLoadListener,Zurl,ImageViewview){
this.imageLoadListener=imageLoadListener;
this.url=url;
this.imageView=view;
}
GlideListener(ImageLoadListenerimageLoadListener,Zurl){
this.imageLoadListener=imageLoadListener;
this.url=url;
}
GlideListener(Zurl){
this.url=url;
}
@Override
publicbooleanonResourceReady(Kresource,Tmodel,Target
if(null!
=imageLoadListener){
if(imageView!
=null){
imageLoadListener.onLoadingComplete(url,imageView,resource);
}else{
LogUtil.e("加载完成回调");
imageLoadListener.onLoadingComplete(url,null,resource);
}
}
returnfalse;
}
@Override
publicbooleanonException(Exceptione,Tmodel,Target
if(imageLoadListener!
=null){
imageLoadListener.onLoadingError(url,e);
}
returnfalse;
}
}
/**
*获取存储器上的图片,回调返回GlideDrawable
*
*@paramcontext上下文年
*@paramfile文件File
*@paramimageLoadListener回调监听器
*/
publicstatic
DrawableTypeRequest
if(type!
=null){
type.listener(newGlideListener
}
}
/**
*获取资源中的图片,回调返回GlideDrawable
*
*@paramcontext上下文
*@paramresourceId资源id
*@paramimageLoadListener回调监听器
*/
publicstatic
DrawableTypeRequest
if(type!
=null){
type.listener(newGlideListener
}
}
/**
*获取网络图片,回调返回GlideDrawable
*
*@paramcontext上下文
*@paramurl图片url
*@paramimageLoadListener回调监听器
*/
publicstatic
DrawableTypeRequest
if(type!
=null){
type.listener(newGlideListener
}
}
/**
*加载存储器上的图片到目标载体
*
*@paramfile文件File
*@paramimageView要显示到的图片ImageView
*/
publicstaticvoidloadImage(finalFilefile,finalImageViewimageView,finalImageLoadListenerimageLoadListener){
Glide.with(imageView.getContext())
.load(file)
.listener(newGlideListener
.into(imageView);
}
/**
*加载资源中的图片到目标载体
*
*@paramresourceId资源id
*@paramimageView图片View
*/
publicstaticvoidloadImage(finalintresourceId,finalImageViewimageView,finalImageLoadListenerimageLoadListener){
Glide.with(imageView.getContext())
.load(resourceId)
.listener(newGlideListener
.into(imageView);
}
/**
*加载圆形头像,用的是普通ImageView,有动画效果
*
*@paramurl图片url
*@paramimageView要显示到的ImageView
*@paramimageLoadListener加载回调监听器
*@paramparms设置占位符和加载失败图片
*/
publicstaticvoidloadCircleImage(finalStringurl,finalImageViewimageView,finalImageLoadListenerimageLoadListener,finalint...parms){
DrawableTypeRequest
if(parms!
=null&&parms.length>0){
type.placeholder(parms[0]);//占位符
if(parms.length>1){
type.error(parms[1]);//图片加载失败显示图片
}
}
type.transform(newCircleTransform(imageView.getContext()));
type.listener(newGlideListener
.into(imageView);
}
/**
*加载网络图片到指定Imageview,支持CircleImageView
*
*@paramurl图片url
*@paramimageView要显示的Imageview
*@paramimageLoadListener图片加载回调
*@paramparms第一个是error的图片
*/
publicstatic
DrawableTypeRequest
if(type!
=null){
type.asBitmap();
if(parms!
=null&&parms.length>0){
type.placeholder(parms[0]);//占位符
if(parms.length>1){
type.error(parms[1]);//图片加载失败显示图片
}
}
//单张CircleImageView不允许动画,不然会不显示,
if(imageViewinstanceofCircleImageView){
type.dontAnimate();
}
type.listener(newGlideListener
.into(imageView);
}
}
/**
*加载一帧视频,添加圆角
*
*@paramurl图片地址
*@paramimageView要加载到的ImageView
*/
publicstaticvoidloadImageFormVideo(Stringurl,ImageViewimageView){
Glide.with(imageView.getContext()).load(url)
.override(DensityUtil.dip2px(150),DensityUtil.dip2px(150))
.placeholder(R.drawable.default_article_image)
.dontAnimate()
.into(imageView);
}
publicstatic
DrawableTypeRequest
if(type!
=null){
type.into(newSimpleTarget
@Override
publicvoidonResourceReady(GlideDrawableresource,GlideAnimation
superGlideDrawable>glideAnimation){
if(imageView!
=null&&resource!
=null){
imageView.setImageDrawable(resource);
}
if(imageLoadListener!
=null){
imageLoadListener.onLoadingComplete(url,imageView,resource);
}
}
@Override
publicvoidonStart(){
super.onStart();
if(drawable!
=null&&imageView!
=null){
imageView.setImageDrawable(drawable);
}
}
@Override
publicvoidonLoadStarted(Drawableplaceholder){
super.onLoadStarted(placeholder);
if(imageLoadListener!
=null){
imageLoadListener.onLoadingStart(placeholder);
}
}
@Override
publicvoidonLoadFailed(Exceptione,DrawableerrorDrawable){
super.onLoadFailed(e,errorDrawable);
if(imageLoadListener!
=null){
imageLoadListener.onLoadingError(errorDrawable,e);
}
}
});
}
}
/**
*加载bitmap,回调返回Bitmap
*
*@paramcontext上下文
*@paramurl图片url
*@paramimageLoadListener图片加载监听器
*@param
*/
publicstatic
DrawableTypeRequest
if(type!
=null){
type.asBitmap().listener(newGlideListener
}
}
/**
*加载GifDrawable,回调返回GifDrawable
*
*@paramcontext上下文
*@paramurl图片url
*@paramimageLoadListener图片加载监听器
*/
publicstatic
DrawableTypeRequest
if(type!
=null){
type.asGif()
.diskCacheStrategy(DiskCacheStrateg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安卓开发 Glide图片加载库的简单封装使用资料 开发 Glide 图片 加载 简单 封装 使用 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)