文章标题
来源:互联网 发布:飞猪是淘宝的吗 编辑:程序博客网 时间: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
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- MTK 8.1遇到“Only fullscreen opaque activities can request orientation”报错处理
- Fresco加载Gif写入RecyclerView
- 代码块
- centOS安装scikit-learn
- 内部解密QQ领域行业术语指的都是什么?
- 文章标题
- openshift template
- Vue的基本用法
- uboot编译脚本解析
- jsp java web使用struts2后出现“The requested resource is not available”
- oracle 取前一分钟、类型转换、时间差
- 数组类—DynamicArray
- [JAVA] 一条新闻引出的思考,关于不用中间变量交换两个变量的值
- [ Pollard_rho ] BZOJ4522