Android图片加载选择

  • 本文由stormzhang 张哥微信公众号总结而来,更多干货请添加(googledev)
  • 在github上搜索AndroidImage
    • 星数有多到少依次是:
      • universal-image-loader
      • Picasso
      • freso
      • glide
      • ion == volley 有图片加载的功能
  • 单独讨论图片加载库!(强需求使用)
    • universalImageLoader:地址:[https://github.com/nostra13/Android-Universal-Image-Loader]
      • 是github上星数最多的,最火的图片加载库;但是该作者在去年9月份宣布停止对该项目的维护了,也就是说以后如果有bug了也不会修复了…在以后的项目实际操作中也就尽量不使用
    • Picasso:地址:https://github.com/square/picasso
      • Picasso是Square公司的大作,叫做 毕加索。具备了图片加载的强大的功能,调用也比较简洁
      • Picasso.with(Context).load(“http://xxxx.xxx.png”).into(imageView);
      • 这就是直接给imageView加载了远程图片的示例,还有别的更多种的用法,可以去官网查看,也可以去搜索大神们讲解的Picasso文章。
  • Glide:地址:https://github.com/bumptech/glide

    • 这是Google一位员工的大作,是基于Picasso的,在此基础上做了大量优化和改进
    • glide默认的Bitmap格式是RGB_565格式,而Picasso默认的是ARGB_8888格式的, RGB_565格式的内存开销要小一半。
    • 子啊磁盘缓存方面,Picasso只会缓存原始尺寸的图片,而Glide缓存的是多种规格的,比如imageview的大小是200*200,原图的400*400;Glide就会缓存200*200的图片,Picasso只会缓存400*400的图片。这样Glide加载的速度就会快,少了每次裁剪后重新渲染的过程!
    • Glide还有一个特性的支持加载gif动态图的,Picasso不支持
    • 还有一些其他的特性。
  • Fresco :地址https://github.com/facebook/fresco

    • 该库是Facebook出品的,因为图加载会导致OOM(out of memory内存溢出),无论怎样优化都有可能出现OOM,低端手机更严重。
    • 所以Facebook在更底层的Native堆中有一个内存区叫Ashmen区,图片在这里不会占用app内存,属于C++的地盘,java对此没有办法处理
    • 不过该库用起来比较麻烦,源码设计C++领域,想读源码……
  • 总结

    • 所以在做项目的时候根据自己的需求进行选择,在Glide和Picasso之间选择,若果项目需要gif图就选择Glide;
    • 如果项目中使用了Square公司的Retrofit OkHttp,那么使用Picasso更加兼容,体积占用也少;
    • 如果自己的项目使用图片比较多,图片社交的App,就推荐使用Fresco,有利于提升性能和体验,需要去研究Fresco并应用到自己的App上
  • -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值