Glide

来源:互联网 发布:android简单源码 编辑:程序博客网 时间:2024/06/08 10:43

几种图片加载框架:

Universal Image Loader:一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛。

Picasso: Square出品,必属精品。和OkHttp搭配起来更配呦!

Volley ImageLoaderGoogle官方出品,可惜不能加载本地图片~

FrescoFacebook出的,天生骄傲!不是一般的强大。

GlideGoogle推荐的图片加载库,专注于流畅的滚动。


一,Glide 是什么?

Glide是一款由Bump Technologies开发的图片加载框架,是Google主导的图片加载开源库,可以是我们在Android平台上以季度简单的方式加载和展示图片   

Android平台上快速和高效的开源的多媒体资源管理库,提供多媒体文件的压缩,内存和磁盘缓存,资源池的接口。它可以最大性能的在Android设备上读取,解码,显示图片和视频。Glide可以将远程的图片,视频,动画图片等缓存在设备本地,便于提高用户浏览图片的流畅体验                                                       

 

二,Glide 的好处/特点?

1,①稳定,速度快,可自适应图片尺寸,支持众多格式,支持加载不同的来源的图片,内存和磁盘缓存的优化

2,②使用简单

③可配置度高,自适应程度高

④支持常见的图片格式(png,jpg,gif,webp)

⑤支持多种数据源(网络,本地,资源,Assets)

⑥高效缓存策略(支持Memory和Disk图片缓存 默认Bitmap格式采用RGB_565内存使用减少一半)

⑦生命周期集成(根据Activity/Fragment生命周期自动管理请求)

⑧高效处理Bitmap(使用Bitmap Pool使Bitmap复用了,主动调用recycle回收需要回收的Bitmap,减少系统回收压力)

3,⑨转码的支持,动画的支持

⑩OKhttp和Volley的支持

 

 

三,为什么要用 Glide?

universalImageLoader最老的图片框架,挺好的就是配置多

Picasso 加载过多的图片时占用的内存相当大 可能会有OutOfMemoryError

Picasso也是一个强大的图片加载框架,支持webp格式,支持渐进式jpeg,可以定义image的各种属性,支持多图请求和图片复用,支持手势缩放和旋转

Glide加载图像以及磁盘缓存优于Picasso,速度更快,并且Glide更有利于减OutOfMemoryError的发生,gif是Glide的杀手锏(但是Picasso的图片质量更高一些)。Glide用法就相当于是另一个Picasso,从Picasso到Glide的改动少一些,并且是Google在维护。

Glide相对于UniversalImageLoader来说,Glide支持gif和短视频,Glide

支持activity,fragment,application生命周期的联动,更智能的管理图片请求。Glide的方法比其多了1000多个。

 

 

 

四,怎么样用Glide?

配置:

    compile 'com.github.bumptech.glide:glide:3.7.0'

基本/常用的方法:

      with() 设置绑定生命周期

load()  设置图片地址

into()  设置显示位置

placeholder() 设置加载中显示的图片(占位图)

error() 设置加载错误是显示的图片//占位图和错误图可以用R.color.

skipMemoryCache() 设置跳过内存缓存

Priority设置下载优先级(递增)

Priority.LOW

Priority.MORMAL

Priority.HIGH

Priority.IMMEDLATE

diskCacheStrategy() 设置缓存策略

          策略解说:

            all:缓存源资源和转换后的资源(缓存所有版本的图像)

            none:不作任何磁盘缓存(什么都不缓存)

            source:缓存源资源(只缓存原来的全分辨率的图像)

            result:缓存转换后的资源(最后的一个图像)

        animate(R.anim.) 设置动画

thumbnail() 设置缩略图支持

override() 设置图片加载尺寸

centerCrop()(拉伸) fitCenter()(缩放)设置动态转换(自定义动态转换Transformation)

into(new SimpleTarget<GlideDrawable>) 设置要加载的内容

listener(new RequestListener<String,GlideDrawable>) 设置监听

asGif() 显示动态Gif   asBitmap() 显示静态Gif

get(this).clearDiskCache() 清理磁盘缓存,需要在子线程执行

get(this).clearMemory() 清理内存缓存,可以在UI线程执行