Glide和Picasso的区别

Glide就是Picasso的克隆版本但是细节上还是又不少区别的

PicassoGlide各有所长 根据自己的需要选择合适的

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

GlidePicasso几乎可以做一样多的事情代码也差不多一样

 

区别

1.Glide导入依赖需要使用Support Library V4包

2.Glide和Picasso的简单加载图片的使用方法都一样

  但是Glide更易用因为Glidewith方法不光接收Context

  还接受ActivityFragment,Context会自动的从他们获取

  Picasso只能传递Context参数

 

  ActivityFragment作为with()参数的好处是

  图片加载会和ActivityFragment的生命周期保持一致比如

  Paused状态暂停加载Resumed的时候又自动重新加载所以

  我建议传参的时候传递ActivityFragmentGlide,而不是Context。

 

使用方法

  Picasso:

  Picasso.with(context).load("图片地址").into(图片控件);

 

  Glide:

  Glide.with(context).load("图片地址").into(图片控件);

 

3.默认Bitmap格式

  GlideRGB_565

  PicassoARGB_8888

  Glide加载的图片比Picasso加载的图片质量要差 Picasso的开销内存远大于Glide。

 

  因为Glide默认的Bitmap格式是RGB_565PicassoBitmap格式ARGB_8888

  内存开销要小一半

  如果你对Glide的默认Bitmap格式的RGB_565效果还比较满意,可以不做任何更改

  但是如果你觉的难以接受,可以创建一个新的GlideModuleBitmap格式转ARGB_8888

 

使用方法:

  public class GlideUtils implements GlideModule{

     @Override

     public void applyOptions(Context context,GlideBuilder builder){

        builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);

     }

     @Override

     public void registerComponents(Context context,Glide glide){

     }

  }

  同时在AndroidManifest.xml中将GildeModule定义为meta_data

  <meta_data android:name="com.inthecheesefactory.lab.gildepicasso.GlideConfiguration"

             android:value="GlideModule"/>

 

4.加载指定的图片的大小

  Picasso需要主动的计算出ImageView的具体大小

  Glide可以计算出任意情况下的ImageView的大小

  这方面Glide完胜Picasso

 

  Picasso也可以指定加载图片的大小

 

使用方法

Picass.with(this)

     .load("图片地址")

     .resize(500,500)

     .into(图片控件);

 

5.Glide加载的图片没有Picasso加载的图片平滑

 

6.磁盘缓存

  Picasso加载的图片是全尺寸的

  Glide加载的图片是和ImageView控件尺寸相同的

 

  尝试着将ImageView调整成不同大小,但不管大小如何Picasso缓存一个全尺寸的

  Glide则不同,他会为每种大小的ImageView都缓存一次,尽管图片已经缓存了一次

  但是假如你要在另外一个地方再次以不同尺寸显示,需要重新下载调整成新的

  尺寸大小然后将这个尺寸的也缓存起来

 

  比如说你的布局上面有两个ImageView控件他们的尺寸大小不一样但是要

  加载同一张图片就会下载两次图片

 

  不过你也能改变这样的行为

  Glide既缓存全尺寸又缓存其他尺寸

  

  使用方法

  Glide.with(this)

      .load("图片地址")

      .diskCacheStrategy(DiskCacheStrategy.ALL)

      .into(图片控件);

  ImageView控件中加载图片的时候,全尺寸的图片从缓存中取出,重新调整大小,然后缓存优点加载图片显示非常快,Picasso因为在显示之前需要重新调整大小而导致一些延迟即便用一下代码让它立即显示,也比Glide慢一步

  

 使用方法

 .noFade();

 

重点来了.............

Glide可以做到Picasso做不到的

 

1.Glide可以加载GIF动态图片 Picasso不能

 

因为Glide加载的图片和Activity/Fragment的生命周期是一致的,因此GIF的动画也会自

动随着Activity/Fragment的状态暂停重放。Glide的缓存在GIF这里也是一样,调整大小

然后缓存

缺点:Glide加载GIF动态图片会消费太多的内存谨慎使用

 

2.Glide可以将任何的本地视频解码成一张静态图片

 

3.还有一个特性是你可以配置图片显示的动画Picasso只有一种动画:fading in。

  最后一个是可以使用thumbnail()产生一个你所加载图片的thumbnail

  其实还有一些特性不过不是非常重要比如将图像转换成字节数组等

 

配置

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

 

库的大小

Glide库的大小比Picasso要大

方法

GlidePicasso的方法个数分别是2678840

建议使用Glide的时候开启ProGuard。

 

总结

GlidePicasso都是完美的库。Glide加载图片以及磁盘缓存的方式都要比Picasso要好,速度更快而且Glide更利于减少OOM的发生,GIF动画是Glide的杀手锏不过Picasso加载的图片质量比Glide更高

建议使用Glide,但是将Bitmap格式转换成ARGB_8888、Glide缓存同时缓存全尺寸和改变尺寸两种

有所长   根据自己的需要选择合适的

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

GlidePicasso几乎可以做一样多的事情代码也差不多一样

 

区别

 

1.Glide导入依赖需要使用Support Library v4

 

2.GlidePicasso的简单加载图片的使用方法如出一辙

  但是Glide更易用因为Glidewith方法不光接收Context

  还接受ActivityFragment,Context会自动的从他们获取

  Picasso只能传递Context参数

 

  ActivityFragment作为with()参数的好处是

  图片加载会和ActivityFragment的生命周期保持一致比如

  Paused状态暂停加载Resumed的时候又自动重新加载所以

  我建议传参的时候传递ActivityFragmentGlide,而不是Context。

 

使用方法

  Picasso:

  Picasso.with(context).load("图片地址").into(图片控件);

 

  Glide:

  Glide.with(context).load("图片地址").into(图片控件);

 

3.默认Bitmap格式

  GlideRGB_565

  PicassoARGB_8888

  Glide加载的图片比Picasso加载的图片质量要差 Picasso的开销内存远大于Glide。

 

  因为Glide默认的Bitmap格式是RGB_565PicassoBitmap格式ARGB_8888

  内存开销要小一半

  如果你对Glide的默认Bitmap格式的RGB_565效果还比较满意,可以不做任何更改

  但是如果你觉的难以接受,可以创建一个新的GlideModuleBitmap格式转ARGB_8888

 

使用方法:

  public class GlideUtils implements GlideModule{

     @Override

     public void applyOptions(Context context,GlideBuilder builder){

        builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);

     }

     @Override

     public void registerComponents(Context context,Glide glide){

     }

  }

  同时在AndroidManifest.xml中将GildeModule定义为meta_data

  <meta_data android:name="com.inthecheesefactory.lab.gildepicasso.GlideConfiguration"

             android:value="GlideModule"/>

 

4.加载指定的图片的大小

  Picasso需要主动的计算出ImageView的具体大小

  Glide可以计算出任意情况下的ImageView的大小

  这方面Glide完胜Picasso

 

  Picasso也可以指定加载图片的大小

 

使用方法

Picass.with(this)

     .load("图片地址")

     .resize(500,500)

     .into(图片控件);

 

5.Glide加载的图片没有Picasso加载的图片平滑

 

6.磁盘缓存

  Picasso加载的图片是全尺寸的

  Glide加载的图片是和ImageView控件尺寸相同的

 

  尝试着将ImageView调整成不同大小,但不管大小如何Picasso缓存一个全尺寸的

  Glide则不同,他会为每种大小的ImageView都缓存一次,尽管图片已经缓存了一次

  但是假如你要在另外一个地方再次以不同尺寸显示,需要重新下载调整成新的

  尺寸大小然后将这个尺寸的也缓存起来

 

  比如说你的布局上面有两个ImageView控件他们的尺寸大小不一样但是要

  加载同一张图片就会下载两次图片

 

  不过你也能改变这样的行为

  Glide既缓存全尺寸又缓存其他尺寸

  

  使用方法

  Glide.with(this)

      .load("图片地址")

      .diskCacheStrategy(DiskCacheStrategy.ALL)

      .into(图片控件);

  ImageView控件中加载图片的时候,全尺寸的图片从缓存中取出,重新调整大小,然后缓存优点加载图片显示非常快,Picasso因为在显示之前需要重新调整大小而导致一些延迟即便用一下代码让它立即显示,也比Glide慢一步

  

 使用方法

 .noFade();

 

重点来了.............

Glide可以做到Picasso做不到的

 

1.Glide可以加载GIF动态图片 Picasso不能

 

因为Glide加载的图片和Activity/Fragment的生命周期是一致的,因此GIF的动画也会自

动随着Activity/Fragment的状态暂停重放。Glide的缓存在GIF这里也是一样,调整大小

然后缓存

缺点:Glide加载GIF动态图片会消费太多的内存谨慎使用

 

2.Glide可以将任何的本地视频解码成一张静态图片

 

3.还有一个特性是你可以配置图片显示的动画Picasso只有一种动画:fading in。

  最后一个是可以使用thumbnail()产生一个你所加载图片的thumbnail

  其实还有一些特性不过不是非常重要比如将图像转换成字节数组等

 

配置

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

 

库的大小

Glide库的大小比Picasso要大

方法

GlidePicasso的方法个数分别是2678840

建议使用Glide的时候开启ProGuard。

 

总结

GlidePicasso都是完美的库。Glide加载图片以及磁盘缓存的方式都要比Picasso要好,速度更快而且Glide更利于减少OOM的发生,GIF动画是Glide的杀手锏不过Picasso加载的图片质量比Glide更高

建议使用Glide,但是将Bitmap格式转换成ARGB_8888、Glide缓存同时缓存全尺寸和改变尺寸两种

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值