在项目中引入Glide
Gradle:
compile 'com.github.bumptech.glide:glide:3.7.0'
如果是Ecplise 请点glide jar包下载相应jar包放入lib文件夹
使用时记得添加所需要的权限:如请求网络,读写内存等。
Glide使用
Glide 至少需要三个参数构造一个完整的图片加载请求:
with("上下文") - 上下文环境
load("地址") - 需要加载图片的URL.
into("图片显示的ImageView") ;
如:Glide.with(context).load(internetUrl).into(targetImageView);
1.那就先从Glide.with()开始说吧:
with(Context context). 使用Application上下文,Glide请求将不受Activity/Fragment生命周期控制。
with(Activity activity).使用Activity作为上下文,Glide的请求会受到Activity生命周期控制。
with(FragmentActivity activity).Glide的请求会受到FragmentActivity生命周期控制。
with(Fragment fragment).Glide的请求会受到Fragment 生命周期控制。
2.requestManager.load()使用:
load(String string) 传入一个可以访问到的String类型的地址的文件地址(本地或者网络地址等)
load(Uri uri) 传入一个uri
load(File flie ) 传入一个file对象
load(Integer resourceid) 传入你的资源文件的id
load(byte[]bys) 传入一个字节数组
3.Glide缓存策略
Glide默认开启磁盘缓存和内存缓存。
设置图片不加入到内存缓存.skipMemoryCache(true)
Glide.with( context ).load(internetUrl).skipMemoryCache(true) .into( imageview);
设置图片不加入到磁盘缓存
Glide.with( context ).load( internetUrl ).diskCacheStrategy( DiskCacheStrategy.NONE).into( imageview);
diskCacheStrategy参数(磁盘缓存策略):
DiskCacheStrategy.NONE :不缓存图片
DiskCacheStrategy.SOURCE :缓存图片源文件
DiskCacheStrategy.RESULT:缓存修改过的图片
DiskCacheStrategy.ALL:缓存所有的图片,默认
4.图片加载优先级
比如有些重要的图片需要先显示出来
Glide.with( context ).load(internetUrl).priority( Priority.HIGH ).into( imageViewHero );
优先级枚举选择:Priority.IMMEDIATE,Priority.HIGH,Priority.NORMAL,Priority.LOW。默认为Priority.NORMAL。
5.占位图,错误图,和淡入淡出效果
Glide.with(context).load()
.placeholder(R.mipmap.ic_launcher) //设置占位图
.error(R.mipmap.future_studio_launcher) //设置错误图片
.crossFade() //设置淡入淡出效果
.into(imageview);
6.设置图片大小和缩放形式
Glide 会根据ImageView的大小,自动限制图片缓存和内存中的大小,当然也可以通过调用 override(horizontalSize, verticalSize)限制图片的大小:
Glide .with(context) .load(internetUrl)
.override(600,200) // 我们可以设置需要加载的图片尺寸。
.into(imageview);
Glide支持两种图片缩放形式,CenterCrop 和 FitCenter
CenterCrop:等比例缩放图片,直到图片的狂高都大于等于ImageView的宽度,然后截取中间的显示。
FitCenter:等比例缩放图片,宽或者是高等于ImageView的宽或者是高。
Glide .with(context) .load(internetUrl).fitCenter().into(imageview);
7.Glide加载bitmap
privateSimpleTargettarget=newSimpleTarget() {
@Override
public voidonResourceReady(Bitmap bitmap,GlideAnimation glideAnimation) {
//对bitmap进行处理并设置
//......
// imageView.setImageBitmap( bitmap );
}
};
private voidloadImageSimpleTarget() {
Glide.with( context ).load( eatFoodyImages[0] ).asBitmap().into(target);
}
当然不介意的话,可以把图片转成字节数组再用Glide进行显示。
8.其他方法说明
dontAnimate(). 移除所有的动画。
animate(int animationId). 在异步加载资源完成时会执行该动画。
animate(ViewPropertyAnimation.Animator animator). 在异步加载资源完成时会执行该动画。
asBitmap(). 无论资源是不是gif动画,都作为Bitmap对待。如果是gif动画会停在第一帧。
asGif().把资源作为GifDrawable对待。如果资源不是gif动画将会失败,会回调.error()。
Glide.get(context).clearMemory();清除缓存在ui线程中调用。
注:若有错误欢迎指正