文章标题

来源:互联网 发布:飞猪是淘宝的吗 编辑:程序博客网 时间:2024/06/06 08:38

简单使用

Glide.with(fragment).load(myUrl).into(imageView)
Glide.with(fragment).clear(imageView)

从文件
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"test.jpg");Glide.with(context).load(file).into(imageViewFile);
从资源id
Glide.with(context).load(R.mipmap.ic_launcher).into(imageViewResource);
从Uri
Glide.with(context).load(uri).into(imageViewUri);
从二进制流
Glide.with(context).load(uri).into(imageViewUri);

Glide最基本的使用方式,其实就是关键的三步走:先with(),再load(),最后into()。

占位图

占位图就是指在图片的加载过程中,先显示一张临时的图片,等图片加载出来了再替换成要加载的图片

Glide.with(this)     .load(url)     .placeholder(R.drawable.loading)     .into(imageView);

占位图的用法其实也演示了Glide当中绝大多数API的用法,其实就是在load()和into()方法之间串接任意想添加的功能就可以。
有时候看不到占位图效果。因为Glide有非常强大的缓存机制,下次加载的时候将会直接从缓存中读取,不会再去网络下载了,因而加载的速度非常快,所以占位图可能根本来不及显示。

磁盘缓存

禁用磁盘缓存,占位图就有机会显示了

Glide.with(this)     .load(url)     .placeholder(R.drawable.loading)     .diskCacheStrategy(DiskCacheStrategy.NONE)     .into(imageView);
异常占位图

如果因为某些异常情况导致图片加载失败,比如说手机网络信号不好,这个时候就显示这张异常占位图。

Glide.with(this)     .load(url)     .placeholder(R.drawable.loading)     .error(R.drawable.error)     .diskCacheStrategy(DiskCacheStrategy.NONE)     .into(imageView);

指定图片格式

Glide是支持加载GIF图片的,并不需要编写什么额外的代码。不管我们传入的是一张普通图片,还是一张GIF图片,Glide都会自动进行判断,并且可以正确地把它解析并展示出来。
但是如果我想指定图片的格式该怎么办呢?就比如说,我希望加载的这张图必须是一张静态图片,我不需要Glide自动帮我判断它到底是静图还是GIF图。由于调用了asBitmap()方法,GIF图就无法正常播放,而是会在界面上显示第一帧的图片。

Glide.with(this)     .load(url)     .asBitmap()     .placeholder(R.drawable.loading)     .error(R.drawable.error)     .diskCacheStrategy(DiskCacheStrategy.NONE)     .into(imageView);

既然我们能强制指定加载静态图片,就也能强制指定加载动态图片。比如说我们想要实现必须加载动态图片的功能,就可以这样写:调用了asGif()方法替代了asBitmap()方法。如果指定了只能加载动态图片,而传入的图片却是一张静图的话,那么结果自然就只有加载失败。

指定图片大小

需要先了解一个概念,就是我们平时在加载图片的时候很容易会造成内存浪费。什么叫内存浪费呢?比如说一张图片的尺寸是1000*1000像素,但是我们界面上的ImageView可能只有200*200像素,这个时候如果你不对图片进行任何压缩就直接读取到内存中,这就属于内存浪费了,因为程序中根本就用不到这么高像素的图片。使用Glide,我们就完全不用担心图片内存浪费,甚至是内存溢出的问题。因为Glide从来都不会直接将图片的完整尺寸全部加载到内存中,而是用多少加载多少。Glide会自动判断ImageView的大小,然后只将这么大的图片像素加载到内存当中,帮助我们节省内存开支。也正是因为Glide是如此的智能,在绝大多数情况下我们都是不需要指定图片大小的,因为Glide会自动根据ImageView的大小来决定图片的大小。

Glide.with(this)     .load(url)     .placeholder(R.drawable.loading)     .error(R.drawable.error)     .diskCacheStrategy(DiskCacheStrategy.NONE)     .override(100, 100)     .into(imageView);

仍然非常简单,这里使用override()方法指定了一个图片的尺寸,也就是说,Glide现在只会将图片加载成100*100像素的尺寸,而不会管你的ImageView的大小是多少了。

例子
RequestOptions requestOptions = new RequestOptions()            .placeholder(R.drawable.default_avatar)            .circleCrop();DrawableTransitionOptions transitionOptions = new DrawableTransitionOptions()            .crossFade();Glide.with(this)            .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")            .apply(requestOptions)            .transition(transitionOptions)            .into(imageView);

API

Glide

- Glide.with(Activity activity) RequestManager

RequestManager
 - load(Object model)   RequestBuilder<Drawable>  - asDrawable()   RequestBuilder<Drawable> - asFile()   RequestBuilder<File>
RequestBuilder
 - load(Bitmap bitmap)   RequestBuilder<TranscodeType>  - load(Drawable drawable)   RequestBuilder<TranscodeType>  - **listener(RequestListener<TranscodeType> requestListener)   RequestBuilder<TranscodeType> - thumbnail(RequestBuilder... thumbnails)    RequestBuilder<TranscodeType> - **apply(RequestOptions requestOptions)   RequestBuilder<TranscodeType> - **transition(TransitionOptions<?, ? super TranscodeType> transitionOptions)   RequestBuilder<TranscodeType> - into(Y target)   Y
RequestListener
 - onLoadFailed(GlideException var1, Object var2, Target<R> var3, boolean var4)  boolean - onResourceReady(R var1, Object var2, Target<R> var3, DataSource var4, boolean var5)   boolean
RequestOptions
 - 构造方法:RequestOptions() - centerInside()   RequestOptions - circleCrop()   RequestOptions - centerCrop()  RequestOptions - placeholder(int resourceId)   RequestOptions - error(int resourceId)  RequestOptions - priority(Priority priority)   RequestOptions - diskCacheStrategy(DiskCacheStrategy strategy)   RequestOptions - transform(Class<T> resourceClass, Transformation<T> transformation)   RequestOptions - encodeQuality(int quality)   RequestOptions

参考文献:http://blog.csdn.net/guolin_blog/article/details/53759439

原创粉丝点击