美文网首页
图片框架

图片框架

作者: 绝非偶然_80a9 | 来源:发表于2019-01-07 20:05 被阅读0次

    第一个框架Image-Loader

    Image-Loader的一些优点:

    1.多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等

    2.支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置

    3.支持图片的内存缓存,文件系统缓存或者SD卡缓存

    4.支持图片下载过程的监听

    5.根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存

    6.较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片

    7.提供在较慢的网络下对图片进行加载

     8.默认实现多种内存缓存算法这几个图片缓存都可以配置缓存算法,不过 ImageLoader 默认实现了较多缓存算法,如 Size 最大先删除、使用最少先删除、最近最少使用、先进先删除、时间最长先删除等。

    Image-Loader的一些缺点:

    缺点在于不支持GIF图片加载, 使用稍微繁琐, 并且缓存机制没有和http的缓存很好的结合。

    Image-Loader设计流程:

    ImageLoader收到展示和加载图片的任务,并交给ImageLoaderEngine(创建任务,并进行任务调度)分配到具体的线程池去完成,任务通过

    Cache (本地缓存)及 ImageDownloader (从网络获取图片)获取图片,中间可能经过

    BitmapProcessor(图片处理器) 和 ImageDecoder (图片解码)处理,最终转换为Bitmap 交给

    BitmapDisplayer 在 ImageAware 中显示。

       注:其中 Cache 分为 MemoryCache(内存缓存) 和 DiskCache(硬盘缓存) 两部分。

           :Processor 资源(图片)处理器,负责处理资源,比如旋转、压缩、截取等。

    第二个框架Picasso

    Picasso的一些优点:

    1.加载网络图片和本地图片并自动缓存处理

    2.链式调用

    3.图形转换操作,如变换大小,旋转等,提供了接口来让用户可以自定义转换操作

    4.在Adapter中回收和取消当前的下载功能

    5.使用方便, 一行代码完成加载图片并显示, 框架体积小

    Picasso的一些缺点:

    缺点在于不支持 GIF, 并且它可能是想让服务器去处理图片的缩放, 它缓存的图片是未缩放的, 并且默认使用ARGB_8888 格式缓存图片, 缓存体大.

    第三个框架Glide

    Glide的一些优点:

    1.GIF动画的解码:通过调用Glide.with(context).load(“图片路径“)方法,GIF动画图片可以自动显示为动画效果。如果想有更多的控制,还可以使用Glide.with(context).load(“图片路径“).asBitmap()方法加载静态图片,使用Glide.with(context).load(“图片路径“).asGif()方法加载动画图片

    2.本地视频剧照的解码:通过调用Glide.with(context).load(“图片路径“)方法,Glide能够支持Android设备中的所有视频剧照的加载和展示

    3.缩略图的支持:为了减少在同一个view组件里同时加载多张图片的时间,可以调用Glide.with(context).load(“图片路径“).thumbnail(“缩略比例“).into(“view组件“)方法加载一个缩略图,还可以控制thumbnail()中的参数的大小,以控制显示不同比例大小的缩略图

    4.Activity生命周期的集成:当Activity暂停和重启时,Glide能够做到智能的暂停和重新开始请求,并且当Android设备的连接状态变化时,所有失败的请求能够自动重新请求

    5.转码的支持:Glide的toBytes() 和transcode() 两个方法可以用来获取、解码和变换背景图片,并且transcode() 方法还能够改变图片的样式

    6.动画的支持:新增支持图片的淡入淡出动画效果(调用crossFade()方法)和查看动画的属性的功能

    7.OkHttp和Volley的支持:默认选择HttpUrlConnection作为网络协议栈,还可以选择OkHttp和Volley作为网络协议栈

    8.方法太多,可以适应很多地方

    Glide的一些缺点:

    1.使用方法复杂

    2.由于Glide其功能强大,所以使用的方法非常多,其源码也相对的复杂,包较大

    第四个框架Fresco

    Fresco的一些优点:

    1. 图片存储在安卓系统的匿名共享内存, 而不是虚拟机的堆内存中, 图片的中间缓冲数据也存放在本地堆内存,

    所以, 应用程序有更多的内存使用, 不会因为图片加载而导致 oom, 同时也减少垃圾回收器频繁调用回收 Bitmap

    导致的界面卡顿, 性能更高.

    2. 渐进式加载 JPEG 图片, 支持图片从模糊到清晰加载

    3. 图片可以以任意的中心点显示在 ImageView, 而不仅仅是图片的中心.

    4. JPEG 图片改变大小也是在 native 进行的, 不是在虚拟机的堆内存, 同样减少 OOM

    5. 很好的支持 GIF 图片的显示

    Fresco的一些缺点:

    1. 框架较大, 影响 Apk 体积

    2. 使用较繁琐

    总结:

    1.都有高效的网络图片下载和缓存性能

    2.Unibersal-ImageLoader功能多,灵活使用配置

    3.Picasso使用复杂的图片压缩转换来尽可能的减少内存消耗

    4.在Adapter中需要取消已经不在视野范围的ImageView图片资源的加载导致图片错位,Picasso已经解决这个问题

    5.用哪个还是看大家写啥了

    相关文章

      网友评论

          本文标题:图片框架

          本文链接:https://www.haomeiwen.com/subject/zrdprqtx.html