1,Glide的优势

  • 默认Bitmap格式是RGB_565

    比ARGB_8888格式的内存开销要小一半

    可以创建一个新的GlideModule将Bitmap格式转换到ARGB_8888:可以创建一个新的GlideModule将Bitmap格式转换到ARGB_8888:

  • Glide加载的大小和ImageView的大小是一致的,Glide从来都不会直接将图片的完整尺寸全部加载到内存中,而是用多少加载多少。Glide会自动判断ImageView的大小,然后只将这么大的图片像素加载到内存当中,帮助我们节省内存开支。

    Picasso是加载了全尺寸的图片到内存,然后让GPU来实时重绘大小

  • Glide缓存的是跟ImageView尺寸相同的。

    让Glide既缓存全尺寸又缓存其他尺寸:diskCacheStrategy(DiskCacheStrategy.ALL)

  • Glide加载图像速度更快

    相对于Picasso而言

  • 配置

    有许多可以配置的选项,比如大小,缓存的磁盘位置,最大缓存空间,位图格式等等。可以在这个页面查看这些配置 Configuration

2,Glide的劣势

  • Glide (v3.5.2)的大小约430kb。

    icasso (v2.5.1)的大小约118kb

  • Glide的方法个数是2678个。

    Picasso的方法个数是840,2678是一个相当大的数字了。建议在使用Glide的时候开启ProGuard


Glide一些基本用法

Glide有非常强大的缓存机制,我们刚才加载那张必应美图的时候Glide自动就已经将它缓存下来了,下次加载的时候将会直接从缓存中读取,不会再去网络下载了,因而加载的速度非常快,所以占位图可能根本来不及显示,这里我们还需要稍微做一点修改,来让占位图能有机会显示出来。

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

不管我们传入的是一张普通图片,还是一张GIF图片,Glide都会自动进行判断,并且可以正确地把它解析并展示出来。

但是如果我想指定图片的格式该怎么办呢?就比如说,我希望加载的这张图必须是一张静态图片,我不需要Glide自动帮我判断它到底是静图还是GIF图。加入了一个asBitmap()方法,只允许加载静态图片,不需要Glide去帮我们自动进行图片格式的判断了。

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

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

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

Glide源码解读

未完,待续

https://blog.csdn.net/yulyu

results matching ""

    No results matching ""