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

快速而又高效的显示图片对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图像,只不过不是全部支持。

【安卓培训 App培训】自动释放内存!Android图片库Fresco相关推荐

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

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

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

    自动释放内存!Facebook推出强大Android图片库Fresco 发表于 2015-03-30 17:23|  14728次阅读| 来源 CSDN|  73 条评论| 作者 刘璐璐 移动开发 图 ...

  3. RAMMAP(运行内存清理工具)自动释放内存,并利用pyqt5制作图形界面

    上一篇文章用python制作了一个自动清理内存的程序,利用cmd端口调用Rammap,不过只是做了一个托盘图标,这回用pyqt5做一个简单的图形界面,并实现对自动清理模式的一些设置 首先利用pyqt5 ...

  4. 三星内存android用法,三星One UI(Android 9)自带清理功能:自动释放内存和存储空间...

    文章翻译自sammobile,侵删 三星Galaxy手机拥有让设备保持最佳运行所需的所有工具,包括通过停止后台应用程序释放设备内存以及通过删除不必要的文件释放存储空间.但是不能期望用户主动关注这些方面 ...

  5. ARC 没有自动释放内存

    http://www.cnblogs.com/qingche/p/4569833.html 定位了好几天,才发现是打印日志没有即时释放内存,使用intrustment 转载于:https://www. ...

  6. redis怎么不让存byte_Redis 删除数据后不能自动释放内存么?

    前言 上周刚来了个应届小师弟,组长说让我带着,周二问了我这样一个问题:师兄啊,我用top命令看了下服务器的内存占用情况,发现Redis内存占用严重,于是我就删除了大部分不用的keys,为什么内存占用还 ...

  7. qt 如何 指针 自动 释放内存_要是面试官再问你智能指针的问题,就拿这篇文章“盘他”!!!...

    前一段时间,有不少朋友问我关于智能指针的问题,并且反映经常会在面试中被面试官问到,所以今天小豆君就来讲讲我对智能指针的理解,希望能对大家有所帮助 既然讲智能指针,我们就先来看看它为什么会出现. 1 传 ...

  8. qt 对话框关闭以及自动释放内存

    关于窗口关闭的操作,在这里指出常用的三个槽,即quit(),exit()以及close(). 首先说明窗口退出时,系统提示对话框的代码编辑.对主程序的退出,可以调用成员函数exit(),同时也可以调用 ...

  9. Android图片库Fresco

    一.基础用法 1.1 添加依赖   首先在build.gradle 文件中添加Fresco依赖: dependencies {// fresco核心库;必须依赖implementation 'com. ...

最新文章

  1. DCN-cs6200 DHCPv6配置
  2. 免费CDN加速隐藏你的服务器原ip以防别人攻击
  3. 灾难恢复演练成功的8大步骤
  4. 143. 最大异或对
  5. MyBatis-Plus_分页查询
  6. 第一台鸿蒙手机是,第一台预装鸿蒙OS的手机终于登场。
  7. 求数列1/3到1/n之和
  8. java商品名称_Java统计商品信息
  9. Flex3与BlazeDS HelloWorld 详解
  10. [转载] python自定义error_Python 自定义异常处理Error函数
  11. Python基本用法练习题
  12. 本地测试用的帐号csv文件
  13. matlab更改类型,matlab数据类型和转换
  14. 报表工具选型对比系列 - 多源关联性能
  15. 关于邮箱的POP协议、imap协议、imap协议简单讲解
  16. Latex/CTex/WinEdt自动编号小标题序号(条目/编号/描述)
  17. 黑客语言——Ruby
  18. vmbox让鼠标离开虚拟机
  19. 苹果如何不显示云服务器照片,iPhone12如何隐藏照片 iPhone12不显示照片的三种方法...
  20. MFC框架 afx_msg CComboBox OnDropdown

热门文章

  1. Beta 测试和 Alpha 测试有什么区别?
  2. 【文章阅读】【超解像】--Residual Dense Network for Image Super-Resolution
  3. 关于登录时验证码无法显示
  4. Python输入密码
  5. 《计算机视觉》笔记(一)
  6. 高通三款处理器齐发布 全面死磕联发科
  7. 有趣的灵魂是什么样的
  8. 有趣的“灵魂”库集合
  9. 大数据实验一 关联规则实验题目:蔬菜价格相关性分析
  10. 深度学习01——入门基础 基于Python