Glide 是 Google 员工的作品(github链接),它完全基于 Picasso ,沿袭了 Picasso 的简洁风格,但在其上做了大量优化与改进。两者区别如下:
- 在内存占用方面, Glide 默认的 Bitmap 格式是 RGB_565 格式(一个像素占16位),而 Picasso 为ARGB_8888 格式(一个像素占32位),因此 Glide内存开销比Picasso 要小一半;
- 在磁盘缓存方面,Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,也就意味着 Glide 会根据 ImageView 的大小来缓存相应大小的图片尺寸,比如你 ImageView 大小是200*200,原图是 800*480 ,而使用 Glide 就会缓存 200*200 规格的图,而 Picasso 只会缓存 800*480 规格的。这个改进就会导致 Glide 比 Picasso 加载的速度要快,毕竟少了每次裁剪重新渲染的过程。不过Glide会为每种大小的ImageView缓存 一次,尽管一张图片已经缓存了一次,但是假如你要在另外一个地方再次以不同尺寸显示,则需要重新下载,调整成新尺寸的大小,然后将这个尺寸的也缓存起来,故Glide需要更大的空间来缓存;
- 最重要的一个特性: Glide 支持加载 Gif 动态图,而 Picasso 不支持该特性。
总之,Glide 是在 Picasso 基础之上进行二次开发的,各个方面做了不少改进,这也导致他的jar包比 Picasso 大,接近 500k,而Picasso 是100多k,不过这个影响不大。
Glide 用法与Picasso 很类似,主要如下所示:
/*添加依赖
dependencies {
compile 'com.github.bumptech.glide:glide:3.7.0'
}
*/
//对ImageView :
@Override
public void onCreate(Bundle savedInstanceState) {
...
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
Glide.with(this).load("http://image85.360doc.com/DownloadImg/2015/05/0716/53278115_3.jpg").into(imageView); //加载网络图片
}
//对ListView:可以直接在Adapter的getView方法中使用
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView myImageView;
if (convertView == null) {
...
}
Glide
.with(viewHolder.imageView.getContext())
.load(imageUrls[position])
.into(holder.imageView);
return convertView;
}