Android图片框架对比

Android图片框架对比,第1张

对比现在主流图片框架的优势和缺点,在实际项目中如何选择适合自己的框架

Glide、Fresco、Picasso、ImageLoader

共同优点:

以上名词介绍

在分析他们的差异、优缺点之前,我们先了解图片缓存通用的概念:

以上概念在不同框架之间可能不同,比如Displayer在ImageLoader中叫做ImageAware,在Picasso和Glide中叫做Target。

以上为Glide的总体设计图。

整个库分为RequestManager(请求管理器)、Engine(数据获取引擎)、Fetcher(数据获取器)、MemoryCache(内存缓存)、DiskLRUCache(本地缓存)、Transformation(图片处理)、Encoder(编码处理)、Registry(图片类型以及解析器配置)、Target(目标)等模块。

简单流程: Glider收到加载及显示资源任务,创建Request并将它交给RequestManager,Request启动Engine去数据源获取资源,得到资源后通过Transformation处理后交给Target.

Glide依赖DiskLRUCache、GifDecoder等开源库去完成本地缓存和Gif图片解密工作;

为Bitmap 维护一个BitmapPool对象池, 对象池的主要目的是通过减少大对象的分配以重用来提高性能!

缺点

①图片质量低:因为机制不同,速度快,但是图片的质量降低了RGB565

②多尺寸缓存导致内存和磁盘占用多:根据ImageView大小来缓存,可能会导致一张图片可能根据展示情况来缓存不同尺寸的几份;

扩展理解参考: https://www.jianshu.com/p/1ab5597af607

以上为Picasso的总体设计图。

整个库分为Dispatcher、RequestHandler以及Downloader、PicassoDrawable等模块。

简单流程: Picasso收到加载显示图片任务后,创建Request并将它交给Dispatcher,Dispatcher分发任务到具体RequestHandler,任务通过MemoryCache及Handler(数据获取接口)获取图片,图片获取成功后通过PicassoDrawable显示到Target中;

上面Data的File system部分,Picasso没有自定义本地缓存的接口,默认使用http的本地缓存,API19以上使用okhttp,一下使用UrlConnection,所以如果需要自定义本地缓存就需要自定义Downloader

缺点 :加载速度没有其他框架快;

特点 :只缓存一个全尺寸的图片,根据需求的大小在压缩转换;

以上为Fresco的总体设计图

整个库分为UI:DraweeView(View控件)、Drawable(图片数据)、DraweeController(图片控制器)、DraweeHiierarchy(图片体系);Core:DataSource(数据源)、ImagePipeline(图像管道)、Producer(生产者)、ProducerFacotry(生产工厂)、Subcriber(订阅)、Supplier(供应者)、Consumer(消费者);IO/Data:MemoryCache(内存缓存)、Network、DiskCache(磁盘缓存)、Recourse(本地资源)

简单流程: 从上面的结构可以看出,fresco主要采用了工厂+建造者的模式实现功能,逻辑划分比较清楚;Fresco框架整体是一个MVC模式,DrawableView--->View用来显示顶层视图、DrawableController--->Control控制加载图片的配置 事件的分发、DrawableHierarchy--->Model 用于存储和描述图片信息,同时也封装了一些图片的显示和视图层级的方法;ImagePipeline模块负责从网络、本地文件系统、本地资源加载图片

缺点:

①框架大,影响Apk体积;

②一定的学习成本,使用比较繁琐,需要使用内部提供的ImageView控件,使用起来比较复杂;

XE炸图辅助框架是一种用于构建和管理图形用户界面(GUI)的框架。它是一种开源的,跨平台的框架,可以让开发人员快速构建功能强大的GUI应用程序。XE炸图辅助框架的主要优势在于它提供了一种简单而强大的方式来构建GUI应用程序,而不需要深入了解底层技术。它使用简单的XML格式来定义GUI组件,并且提供了一系列强大的API来控制GUI组件的行为。XE炸图辅助框架还提供了一系列高级功能,如拖放支持,自定义组件,多线程支持,国际化支持,多媒体支持等等。XE炸图辅助框架是一个非常强大的工具,可以帮助开发人员快速构建功能强大的GUI应用程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11986948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存