图片加载的第三方库Glide与Picasso

来源:互联网 发布:看图王软件下载 编辑:程序博客网 时间:2024/05/17 01:51

两者的使用很相似,但是也有很大的区别:

首先:

Glide加载的图片没有Picasso那么平滑

Picasso的内存开销远大于Glide,Picasso是加载了全尺寸的图片到内存,然后让GPU来实时重绘大小。而Glide加载的大小和ImageView的大小是一致的,因此更小,虽然内存开销差距不大,但是在这个问题上Glide完胜Picasso。因为Glide可以自动计算出任意情况下的ImageView大小。

Picasso和Glide在磁盘缓存策略上有很大的不同。Picasso缓存的是全尺寸的,而Glide缓存的是跟ImageView尺寸相同的

尝试将ImageView调整成不同大小,但不管大小如何Picasso只缓存一个全尺寸的。Glide则不同,它会为每种大小的ImageView缓存一次。尽管一张图片已经缓存了一次,但是假如你要在另外一个地方再次以不同尺寸显示,需要重新下载,调整成新尺寸的大小,然后将这个尺寸的也缓存起来

Glide的这种方式优点是加载显示非常快。而Picasso的方式则因为需要在显示之前重新调整大小而导致一些延迟,即便你添加了这段代码来让

对我而言,我更喜欢Glide,因为它远比Picasso快,虽然需要更大的空间来缓存


库的大小Picasso (v2.5.1)的大小约118kb,而Glide (v3.5.2)的大小约430kb。

使用方法:

Glide.with(this) 
.load(“http://nuuneoi.com/uploads/source/playstore/cover.jpg“) 
.diskCacheStrategy(DiskCacheStrategy.ALL) 
.into(ivImgGlide);


// Picasso 
.resize(300, 200);

// Glide 
.override(300, 200);

Center Cropping

// Picasso 
.centerCrop();

// Glide 
.centerCrop();

Transforming

// Picasso 
.transform(new CircleTransform())

// Glide 
.transform(new CircleTransform(context))

设置占位图或者加载错误图:

// Picasso 
.placeholder(R.drawable.placeholder) 
.error(R.drawable.imagenotfound)

// Glide 
.placeholder(R.drawable.placeholder) 
.error(R.drawable.imagenotfound)


总结:

Glide和Picasso都是非常完美的库。Glide加载图像以及磁盘缓存的方式都要优于Picasso,速度更快,并且Glide更有利于减少OutOfMemoryError的发生,GIF动画是Glide的杀手锏。不过Picasso的图片质量更高。你更喜欢哪个呢?

虽然我使用了很长事件的Picasso,但是我得承认现在我更喜欢Glide。我的建议是使用Glide,但是将Bitmap格式换成 ARGB_8888、让Glide缓存同时缓存全尺寸和改变尺寸两种。

其实我是抄来的:http://blog.csdn.net/qq_35166847/article/details/51814409 别打我
原创粉丝点击