Glide使用

来源:互联网 发布:node.js入门 编辑:程序博客网 时间:2024/04/29 17:25

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 ,那我们如何一步到位了?这个时候我们需要用到它的新特性注解.
首先:创建一个类注意他的注解.

@GlideModulepublic 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);
原创粉丝点击