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支持。

實戰一把屌爆天的功能

我經過實戰發現使用時有幾步需要留意:

  1. jcenter和mavenCentral都已經有這個庫了。
  2. 在Application裏init切記在Android管理文件裏聲明name,否則容易跳坑。

目前截圖只是簡單的測試體驗了下這個屌爆天的庫基本功能,日後還會持續補充:

gif爲動態圖

該實例代碼點我下載

IMAGE PIPELINE指南

參見這裏



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章