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

目录结构
Facebook推出强大Android图片库Fresco,Fresco有这些特性,自动释放内存、Fresco 加载和处理动画、Drawing 显示图像、Fresco自定义加载等。

Android图片库Fresco

图片库 Fresco 产生的背景

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

为了解决这一问题,Facebook最近推出了一款用于Android应用中展示图片的强大图片库Fresco,它能够从网络、本地存储和本地资源中加载图片。而且,为了节省数据和CPU,它拥有三级缓存。

此外,Fresco在显示方面是用了Drawees,可以显示占位符,直到图片加载完成。而当图片从屏幕上消失时,会自动释放图片所占的内存。Fresco支持Android 2.3及以上版本,目前已托管至Github上,Fresco官网。

Fresco主要特性

自动释放内存

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

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

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

Fresco能支持Streaming

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

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

Fresco 加载和处理动画

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

Drawing 显示图像

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

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

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

为一个图像指定不同的URI,从中选取一个已经缓存的显示。
优先显示低分辨率图像,待数据到达后交换到高的分辨率。
如果图像有EXIF缩略图,首先显示缩略图,直到整个图片被加载出来(只针对本地图片)。
调整或旋转图像。
即使是在老版的Android上也可以解码WebP图像,只不过不是全部支持。
转载自51it技术博客:http://it.51xw.net/internet/100011.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好名字都被猪取了-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值