Fresco 基础使用

本文首先介绍一下 Facebook 推出的这个强大的图片加载框架以及一些简单的使用,在后续的文章中会逐步深入探究它的实现原理以及一些值得学习的编程思想。

Android 中加载图片

Android 系统是一个多用户的 Linux 系统,每一个应用会分配一个独立的 Linux 用户进程,基于这样的的运行机制,应用在运行过程中能够使用的内存大小是有限的,一般在设备出厂后,单个应用可分配的最大内存就确定下来了(定义在 /system/build.prop 文件中的 dalvik.vm.heapstartsize = 128),如果应用需要使用的内存超出了这个大小,便会引起 OOM(Out Of Memory) 错误,也就是所谓的内存泄漏,此时进程会被系统强制 kill 掉,导致应用无法继续正常运行。因此,在进行 Android 应用开发的时候,要尽可能的避免引发内存泄漏问题。

在 Android 应用中,图片资源(Bitmap)通常需要占用大量内存,图片资源占用内存的计算公式为:

图片占用的内存 = 图片长度 * 图片宽度 * 单位像素占用的字节数

其中长度和宽度的单位是像素(px),单位像素占用的字节数以 ARGB_8888 格式为例,其他图片格式单位像素占用字节数可在 官方文档 中查看。以一张 500 * 500px 的图片为例,如果在应用中加载,所需要占用的内存为:

500 * 500 * 4 = 1,000,000字节(大约1M)

如果需要连续加载 10 张图片,则占用内存 10M,以这样的内存消耗,如果不能及时清理图片资源回收内存,极容易引起内存泄漏。因此,在 Android 应用开发过程中,需要重视图片资源的处理。

为什么要使用 Fresco

在 Android 开发中,需要重视图片资源的处理,而图片资源的处理并不简单,涉及到很多方面.比如,何时加载图片何时回收图片,图片是否需要压缩以及怎样压缩,下载网络图片和占位图的处理,是否需要缓存以及怎样缓存,图片圆角处理以及其他修改等许多问题需要解决,而解决这些问题需要丰富的经验以及大量的时间,才能保证尽量减少 OOM 错误,在 Fresco 之前,已经有一些优秀的第三方图片加载库能够帮助开发者处理快速集成图片处理框架,比如 Picasso , Universal-Image-Loader , Glide 等,使用其中任意一个都能够很好的集成图片处理框架。而 Fresco 综合了之前的图片加载库的优点,并利用本地代码做了性能优化,实现了更好的内存管理和更强大的功能,是一个值得深入学习的图片加载库。

Fresco 是 Facebook 推出的一个强大的图片加载框架,使用它能够很快速的完成一些日常开发中需要用到图片的需求,包括图片加载与缓存,图片处理以及一些实用功能,官方文档 中详细介绍了它的配置与使用。相比于其他图片加载框架,具有如下特性:

  • 在 Android5.0 以下系统,图片不存储在 Java heap 中,而是存储在 ashmemheap 中,在图片不显示的时候,占用的内存会自动释放,降低了 OOM 的风险
  • 可以实现渐进式的 JPEG 图片呈现
  • 支持 gif 和 WebP 格式图片加载
  • image pipeline 设计允许多方面控制图片的加载
  • Drawees 设计允许多种方式处理图片的呈现

关于 Fresco 的底层实现以及内存分配,将在后续文章中介绍,本文主要介绍 Fresco 的配置与圆角图片的使用

如何使用 Fresco

按照文档的描述,首先需要进行项目引入,如果使用 AndroidStudio 开发,需要在对应 Module 的 build.gradle 文件中添加如下配置代码:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值