Glide使用
Glide是一个Android的图片加载和缓存库,它主要专注于大量图片的流畅加载,Glide几乎可以胜任任何你需要使用到的图片从网络拉取,压缩,显示的场景.
基本用法:
Glide.with(MainActivity.this).load(url).into(mImageView);
apply
这里边有一个apply方法,用于一些对图片的个人定制,它传入的是RequestOptions,比如说我们可以这样:
RequestOptions options = new RequestOptions()
.centerCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.skipMemoryCache(false);
Glide.with(MainActivity.this).load(url).apply(options).into(mImageView);
这里的RequestOptions 你自己随便定制.
RequestOptions :
1.占位符placeholder
2.transformations变换
3.缓存策略
4.组件特定参数:编码质量,解码参数等.
new RequestOptions()
.override(int w, int h)//重新测量大小
.fallback()//url为空时,加载的图片
.error()//错误时的图片
.placeholder();//未加载之前的图片
.centerCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.skipMemoryCache(false);//是否跳过内存缓存
//....还有一些其他的设置
监听(listener)
当处理完图片后,我们可能会还想对它进行监听,看他是否成功或者对它做进一步的处理.
Glide.with(MainActivity.this).load(url).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
//错误返回
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
//注意这个方法如果返回true的话,代表事件被处理,也就是说在Glide中其他调用它的地方就不执行了.
return false;
}
}).into(mImageView);
transition(变换)
里边还有一个transition方法,决定了图片加载完成后如何过渡到你想要的图片.
1.淡入
2.交叉淡入
3.不过渡
Glide.with(MainActivity.this)
.asBitmap()
.load("")
.transition(BitmapTransitionOptions.withCrossFade())
.apply(options)
.into(mImageView);
这里注意,我是先将图片表明为bitmap ( asBitmap() ) ,然后才使用BitmapTransitionOptions,不同的类型使用不同的transition.
drawable用DrawableTransitionOptions.如果不是bitmap和drawable,就用GenericTransitionOptions
RequestBuilder
它是如何得到的呢?
RequestBuilder<Drawable> builder = Glide.with(MainActivity.this).
通过builder,我们可以使用as(),load(),apply(),into().其内部使用的是链式结构,每一个方法都返回RequestBuilder.而且它可以重用,这样就不用每次都写那么长了,虽然只有一句.
RequestBuilder<Drawable> builder = Glide.with(MainActivity.this).asDrawable();
for (int i = 0; i < 10; i++){
builder.load("").into(mImageView);
}
预加载:
有时候我们不想图片立即显示,但是into()方法必须传东西啊,这个时候我们就可以使用preload(),它是把图片先缓存起来,你下次在加载,它就直接从缓存里拿就行了.这里注意,我们要将缓存策略改成可以缓存,不然它往哪放了.
Glide.with(MainActivity.this).load(url).preload();
//你想显示的时候.
Glide.with(MainActivity.this).load(url).into(mImageView);
取消加载:
有一个很有用的东西就是,在我们使用listview时,自动滑动时如果在加载图片,那会导致很卡,所以这个时候我们让它停止加载,等它停止时在加载,那就很好了.
//重新加载
Glide.with(MainActivity.this).resumeRequests();
//停止加载
Glide.with(MainActivity.this).pauseRequests();
新特性(注解)
前面我们使用的时候,需要配置参数,特别是RequestOptions ,那我们如何一步到位了?这个时候我们需要用到它的新特性注解.
首先:创建一个类注意他的注解.
@GlideModule
public class MyGlideApp extends AppGlideModule {
//在这里边,你可以实现自己对于图片的一些定制,重新编译工程,他会给你实现这几个类(看图)
//当然你不定制也可以.
}
这个时候你就可以一句搞定啦
GlideApp.with(MainActivity.this)
.load(url)
.centerCrop()
.diskCacheStrategy(DiskCacheStrategy.NONE)
.dontAnimate().dontTransform().skipMemoryCache(false)
.placeholder(R.drawable.music).error(R.drawable.music).fallback(R.drawable.music)
.override(100, 100)
.into(mImageView);
上一篇: 你知道怎么清蒸大闸蟹才好吃呢?
下一篇: 古代的大刀上为何有圆环?圆环象征着什么?