阅读更多
快速而又高效的显示图片对Android设备来说是件极其重要的事情,但在过去的几年里,在有效存储图像方面我们面临了很多问题。图片太大,而手机又只有很小的内存,特别是Android设备还要将内存分割给各个应用。所以,太多的图片总会耗去大部分的内存,从而导致应用的崩溃。

为了解决这一问题,Facebook最近推出了一款用于Android应用中展示图片的强大图片库Fresco,它能够从网络、本地存储和本地资源中加载图片。而且,为了节省数据和CPU,它拥有三级缓存。此外,Fresco在显示方面是用了Drawees,可以显示占位符,直到图片加载完成。而当图片从屏幕上消失时,会自动释放图片所占的内存。Fresco支持Android 2.3及以上版本,目前已托管至Github上。



主要特性:
  • 内存

解压后的图片和Android的位图都会占据很大的内存,这导致Java 垃圾收集器更频繁的运行,也让应用变得更加缓慢,这一问题在没有对垃圾收集器进行完善的Android 5.0上尤为严重。

在Android 4.x及以下版本,Fresco将图片放置在Android内存的一个特殊位置。这可以确保当图像不在屏幕上显示时,可以自动释放它们所占的内存。让应用运行的更快速,且不易崩溃。

使用Fresco的应用,即使在配置低端的设备上也能正常运行,而且你无需经常性地去担心图片的内存占用情况。
  • Streaming

Web上的渐进式(Progressive)JPEG图片已经存在多年,打开文件过程中,会先显示整个图片的模糊轮廓,随着扫描次数的增加,图片变得越来越清晰。这种格式可以说是网络较慢情况下的救星,通过图片的轮廓知道正在加载的图片大概是什么。

Android自己的图片库不支持streaming,而Fresco可以,只需指定一个URI,你的应用程序就可以随着数据的到来,自动更新它的显示。
  • 动画

动画GIF和WebP应该是应用的难点,每一帧都是一个大型的位图,而每个动画都是一系列的帧。Fresco则负责加载和处理这些帧及管理它们的内存。
  • Drawing

Fresco在显示方面使用了Drawees,Fresco的Drawees能够显示占位符,直到图片已加载,并自动显示到图像到达时:

将图片扩展至自定义的焦点,而不是作为处理的中心。
使用圆角化或圆形来显示图像。
如果网络加载失败的话,用户可以点击占位符重新加载图像。
显示自定义背景、浮窗小部件(overlays)或图像上的进度条。
当用户点击图片,自定义浮窗小部件。
  • 加载

Fresco的图像管道可以让你以多种方法来自定义加载:

为一个图像指定不同的URI,从中选取一个已经缓存的显示。
优先显示低分辨率图像,待数据到达后交换到高的分辨率。
如果图像有EXIF缩略图,首先显示缩略图,直到整个图片被加载出来(只针对本地图片)。
调整或旋转图像。
即使是在老版的Android上也可以解码WebP图像,只不过不是全部支持。
传送门:Fresco官网Github托管地址
  • 大小: 31.3 KB
10
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • ASP.NET程序设计 读书笔记

    2011-5-18 晚上 (回忆下,这个笔记呢,是自己一点一滴的看书然后把一些经常忘记的东西记下来,以后备用。有些是截图过来的,感觉有点像以前撕小报,因为这书也蛮old的了。呵呵,虽然很基础的东东,但是好记性不如烂笔头啊,继续加油,快看完了。) 最经常忘记的额 &&或and(与) 和||或or(或) ---->&&同时为真时,是真。 ...

  • 关于《.net框架程序设计》读书笔记

       读书笔记能起到提纲携领的作用,在书写读书笔记的同时将各章节的知识点在头脑中回顾、归类,并付诸纸端,把章节的重点分类,把自己对知识点的认知写出来。这个过程本身也是个学习的过程。    尝闻读书有个过程:把书读薄,再把书读厚。就是说先掌握了书中的要点,理解了书的内容,即为“读薄”;然后再咀嚼书中的知识,加上自己的认识、观点,再拓展、应用,即为“读厚”。软件行业日新月异,新知识新技术层出不穷,而我

  • Facebook推出强大Android图片库Fresco 自动释放内存 图片缓存 内存益处

    Facebook推出强大Android图片库Fresco 自动释放内存 图片缓存 内存益处

  • Facebook推出强大Android图片库Fresco

    摘要:Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。其中的Drawees可以显示占位符,直到图片加载完成。而当图片从屏幕上消失时,会自动释放...

  • Facebook推出强大Android 自动释放内存的图片库Fresco

    Facebook推出强大Android图片库Fresco,Fresco有这些特性,自动释放内存、Fresco 加载和处理动画、Drawing 显示图像、Fresco自定义加载等。Android图片库Fresco图片库 Fresco 产生的背景在过去的几年里,对Android...

  • (转)Facebook推出强大Android图片库Fresco

    解压后的图片和Android的位图都会占据很大的内存,这导致Java 垃圾收集器更频繁的运行,也让应用变得更加缓慢,这一问题在没有对垃圾收集器进行完善的Android 5.0上尤为严重。 在Android 4.x及以下版本,Fresco将...

  • 【安卓培训 App培训】自动释放内存!Android图片库Fresco

    摘要:Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。其中的Drawees可以显示占位符,直到图片加载完成。而当图片从屏幕上消失时,会自动释放...

  • 前沿技术:FaceBook推出的Android图片加载库Fresco

    在Android设备上面,快速高效的显示图片是极为重要的。过去的几年里,我们在如何高效的存储图像这方面遇到了很多问题。图片太大,但是手机的内存却很小。每一个像素的R、G、B和alpha通道总共要占用4byte的空间。如果...

  • Android之Fresco(facebook的强大Android图片加载的框架)

    Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。其中的Drawees可以显示占位符,直到图片加载完成。而当图片从屏幕上消失时,会自动释放内存。 ...

  • fackbook的Fresco (FaceBook推出的Android图片加载库-Fresco)

    【Android开发经验】FaceBook推出的Android图片加载库-Fresco   欢迎关注ndroid-tech-frontier开源项目,定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章 原文链接:...

  • FaceBook推出的Android图片加载库Fresco

    在Android设备上面,快速高效的显示图片是极为重要的。过去的几年里,我们在如何高效的存储图像这方面遇到了很多问题。图片太大,但是手机的内存却很小。每一个像素的R、G、B和alpha通道总共要占用4byte的空间。如果...

  • FaceBook推出的Android图片加载库-Fresco

    在Android设备上面,快速高效的显示图片是极为重要的。过去的几年里,我们在如何高效的存储图像这方面遇到了很多问题。图片太大,但是手机的内存却很小。每一个像素的R、G、B和alpha通道总共要占用4byte的空间。如果...

  • Fresco-FaceBook推出的Android图片加载库

    在Android设备上面,快速高效的显示图片是极为重要的。过去的几年里,我们在如何高效的存储图像这方面遇到了很多问题。图片太大,但是手机的内存却很小。每一个像素的R、G、B和alpha通道总共要占用4byte的空间。如果...

  • 一个男人和三个女人的故事[《.net框架程序设计》_第十一章 多事件示例]

    第十一章 多事件示例[一个男人和三个女人的故事] 摘要:        应用FCL中的System.ComponentModel.EventHandlerList示例一个类型中发布多事件的应用   场景:一个男生有三个女朋友,各自有不同的爱好,女朋友A爱好音乐,女朋友B爱好美食,女朋友C爱好XXX,为满足各个女朋友,此男生必须进行唱歌、烹饪食物、xxx。 以此制作程序演示单类型多事件的应用,并假设

  • [《.net框架程序设计》]第十一章 事件

    第十一章 事件 摘要: ?????? 本章讲述事件的应用,包括: n???????? 发布事件设计模式 n???????? 侦听事件的方法 n???????? 显式控制事件注册 n???????? 一个类型定义多个事件并减少内存资源 ? 一、???????????? 发布事件 1、发布事件的类型提供的功能: l???????? 允许其他对象登记事件 l???????? 允许其他对象注销事件 l??

  • [《.net框架程序设计》]第九章 方法

    第九章 方法 一、???????????? 实例构造器 1、? 前面提到用new操作符创建对象时的三部曲: l???????? 为对象分配内存 l???????? 初始化对象的附加成员(方法表指针和SyncBlockIndex) l???????? 调用实例构造器初始化实例状态 在分配内存时,系统将所有内存位置均置为0值,这就是为什么字段初始化而未赋值时均为0或null值。 ? 不调用实例构

  • [《.NET框架程序设计》]第八章 常数与字段

    第八章 常数与字段 一、常数 1、可被定义为常数的类型有: 2        基元类型:Boolean, Char, Byte, SByte, Decimal, Int16, Int32, UInt16, UInt32, Int64, UInt64, Single, Double 2        字符串:String 2        枚举类型 2、常数在编译后直接嵌入IL代码中,因此一个模块中

  • [《.net框架程序设计》]第一章 Microsoft .NET框架开发平台体系结构

    第一章?? Microsoft .NET框架开发平台体系结构 一、???????????? 将源代码编译为托管模块: ? 1、? CLR的存在是得我们可以选择适合表达逻辑的语言,只要存在相应得编译器将代码编译成为面向CLR的代码即可,结果成为托管模块。 ? 2、? 托管模块(managed module):是一个需要CLR才能执行的标准windows可移植可执行文件(portable execu

Global site tag (gtag.js) - Google Analytics