FaceBook開源庫Fresco

weixin_33711641發表於2017-05-23

資料已經整理成了電子書歡迎進群284568173討論學習使用

關於 Fresco

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 支援

相關文章