96、facebook Fresco框架库源使用基础
开源项目链接
facebook Fresco仓库:git clone https://github.com/facebook/fresco
facebook Fresco主页:“>http://fresco-cn.org/docs/index.html#
Fresco Demo:https://github.com/yanbober/Android-Blog-Source/tree/master/Fresco-Android-CN-Demo
背景介绍
最近微博和论坛火了一个facebook的lib,其实没啥介绍的,以下文字摘自Fresco主页,只能说他牛逼高大上duang duang duang的。
Fresco是一个强大的图片加载组件。Fresco中设计有一个叫做image pipeline的模块。它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级文件)。Fresco中设计有一个叫做Drawees模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用。Fresco支持Android2.3(API level 9)及其以上系统。
最牛逼的特点
内存管理
一个没有未压缩的图片,即Android中的Bitmap,占用大量的内存。大的内存占用势必引发更加频繁的GC。在5.0以下,GC将会显著地引发界面卡顿。在5.0以下系统,Fresco将图片放到一个特别的内存区域。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。Fresco在低端机器上表现一样出色,你再也不用因图片内存占用而思前想后。
图片的渐进式呈现
渐进式的JPEG图片格式已经流行数年了,渐进式图片格式先呈现大致的图片轮廓,然后随着图片下载的继续,呈现逐渐清晰的图片,这对于移动设备,尤其是慢网络有极大的利好,可带来更好的用户体验。
Android本身的图片库不支持此格式,但是Fresco支持。使用时,和往常一样,仅仅需要提供一个图片的URI即可,剩下的事情,Fresco会处理。
Gif图和WebP格式
是的,支持加载Gif图,支持WebP格式。
图像的呈现
Fresco的Drawees设计,带来一些有用的特性:
- 自定义居中焦点(对人脸等图片显示非常有帮助)。
- 圆角图,当然圆圈也行。
- 下载失败之后,点击重现下载。
- 自定义占位图,自定义overlay, 或者进度条。
- 指定用户按压时的overlay。
图像的加载
Fresco的image pipeline设计,允许用户在多方面控制图片的加载:
- 为同一个图片指定不同的远程路径,或者使用已经存在本地缓存中的图片。
- 先显示一个低解析度的图片,等高清图下载完之后再显示高清图。
- 加载完成回调通知。
- 对于本地图,如有EXIF缩略图,在大图加载完成之前,可先显示缩略图。
- 缩放或者旋转图片。
- 处理已下载的图片。
- WebP支持。
实战一把屌爆天的功能
我经过实战发现使用时有几步需要留意:
- jcenter和mavenCentral都已经有这个库了。
- 在Application里init切记在Android管理文件里声明name,否则容易跳坑。
目前截图只是简单的测试体验了下这个屌爆天的库基本功能,日后还会持续补充:
IMAGE PIPELINE指南
96、facebook Fresco框架库源使用基础的更多相关文章
- 96、facebook Fresco框架库源使用(转载)
各个属性详情:http://blog.csdn.net/y1scp/article/details/49245535 开源项目链接 facebook Fresco仓库:git clone https: ...
- [源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & Driver
[源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & Driver 目录 [源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & ...
- Android 必须知道2018年流行的框架库及开发语言,看这一篇就够了!
导语 2017 已经悄悄的走了,2018 也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来,来规划一下今年要学哪些新技术.这几年优秀Android的开源库不断推出,新技术层出不穷,需要我们不断 ...
- 【Android 系统开发】Android框架 与 源码结构
一. Android 框架 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android运行环境层; -- 应用框架层; -- 应 ...
- Golang构建HTTP服务(一)--- net/http库源码笔记
搭建一个简单的Go Web服务器 Go语言标准库 - net/http 在学习Go语言有一个很好的起点,Go语言官方文档很详细,今天我们学习的Go Web服务器的搭建就需要用到Go语言官方提供的标准库 ...
- Android框架 与 源码结构
一. Android 框架 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android运行环境层; -- 应用框架层; -- 应 ...
- Fresco框架SimpleDraweeView控件的简单使用
首先把网络.SD卡的读写权限添加上:<span style="font-family: Arial, Helvetica, sans-serif;"> </s ...
- 如何查看JDK以及JAVA框架的源码
如何查看JDK以及JAVA框架的源码 设置步骤如下: 1.点 “window”-> "Preferences" -> "Java" -> &q ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码]
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码] 开始,我们有了一系列的解决方案,我们将动手搭建新系统吧. 用 ...
随机推荐
- 转载:javascript 拖拽排序,简洁示例备忘
转载自:http://blog.csdn.net/wang4978/article/details/6721157 <html> <head> <title>拖动行 ...
- ABBYY PDF Transformer+从文件选项中创建PDF文档的教程
可使用OCR文字识别软件ABBYY PDF Transformer+从Microsoft Word.Microsoft Excel.Microsoft PowerPoint.HTML.RTF.Micr ...
- 005. C#发送邮件
/// <summary> /// 发送邮件 /// </summary> /// <param name="toEmailS">邮件接收者列表 ...
- unity, 查看.anim中的动画曲线(和帧)
在场景里建一个gameObject,添加一个Animation组件,将.anim文件添加到Animation组件的Animations中,然后在Animation组件面板中选中.anim,然后 菜单- ...
- C#去掉字符串中的特殊字符
方案一: string except_chars = ": ‘ ! @ # % … & * ( ^ & ¥ , . , .)$"; string src = ...
- sqlplus将查询结果重定向到文件,不输出到屏幕
--每行的字符数目 --该参数设置每页输出的行数.n=0表示不产生新页 --显示和拷贝long类型值的最大宽度的设置,最大值2G --sqlplus检索long类型值的增量大小.由于内存的限制 可按增 ...
- 关于SQLServer2005的学习笔记—异常捕获及处理
转自:http://blog.csdn.net/baoqiangwang/article/details/5395874 SQLServer2005 提供了类似于 C# 和 C++ 语言中的异常处理的 ...
- C#动态数组ArrayList和List<T>的比较
C#中一维动态数组(即列表)分ArrayList和List<T>两种,其容量可随着我们的需要自动进行扩充 一.ArrayList类(少用) ArrayList位于System.Collec ...
- git在本地创建远程仓库
类似的博文,在前面的帖子里面也提到过,当时讲述的是一个入门级别的.其URL是ssh://username@repo-host-address/repo-path这种格式. 今天再说说如何创建类似Git ...
- 给Jquery动态添加的元素添加事件2
$('div').on('click', 'button', function(e){console.log($(e.target).is(':button'))}); $('<button&g ...