前言

2018-02-24 15:57 更新

Fresco是一個強(qiáng)大的系統(tǒng)用于在Android應(yīng)用中展示圖片,它能夠從網(wǎng)絡(luò)、本地存儲和本地資源中加載圖片。它擁有三級緩存,Fresco在顯示方面是用了Drawees,可以顯示占位符,直到圖片加載完成。

本教程內(nèi)容來源于 fresco 中文網(wǎng)

英文官網(wǎng)Fresco:http://frescolib.org/

Fresco 是一個強(qiáng)大的系統(tǒng)用于在 Android 應(yīng)用中展示圖片,它能夠從網(wǎng)絡(luò)、本地存儲和本地資源中加載圖片。它擁有三級緩存,F(xiàn)resco 在顯示方面是用了 Drawees,可以顯示占位符,直到圖片加載完成。

Fresco 是一個強(qiáng)大的圖片加載組件。

Fresco 中設(shè)計(jì)有一個叫做 image pipeline 的模塊。它負(fù)責(zé)從網(wǎng)絡(luò),從本地文件系統(tǒng),本地資源加載圖片。為了最大限度節(jié)省空間和 CPU 時間,它含有 3 級緩存設(shè)計(jì)(2 級內(nèi)存,1 級文件)。

Fresco 中設(shè)計(jì)有一個叫做 Drawees 模塊,方便地顯示 loading 圖,當(dāng)圖片不再顯示在屏幕上時,及時地釋放內(nèi)存和空間占用。

Fresco 支持 Android2.3(API level 9) 及其以上系統(tǒng)。

特性

內(nèi)存管理

一個沒有未壓縮的圖片,即 Android 中的 Bitmap,占用大量的內(nèi)存。大的內(nèi)存占用勢必引發(fā)更加頻繁的 GC。在 5.0 以下,GC 將會顯著地引發(fā)界面卡頓。

在 5.0 以下系統(tǒng),F(xiàn)resco 將圖片放到一個特別的內(nèi)存區(qū)域。當(dāng)然,在圖片不顯示的時候,占用的內(nèi)存會自動被釋放。這會使得 APP 更加流暢,減少因圖片內(nèi)存占用而引發(fā)的 OOM。

Fresco 在低端機(jī)器上表現(xiàn)一樣出色,你再也不用因圖片內(nèi)存占用而思前想后。

圖片的漸進(jìn)式呈現(xiàn)

漸進(jìn)式的 JPEG 圖片格式已經(jīng)流行數(shù)年了,漸進(jìn)式圖片格式先呈現(xiàn)大致的圖片輪廓,然后隨著圖片下載的繼續(xù),呈現(xiàn)逐漸清晰的圖片,這對于移動設(shè)備,尤其是慢網(wǎng)絡(luò)有極大的利好,可帶來更好的用戶體驗(yàn)。

Android 本身的圖片庫不支持此格式,但是 Fresco 支持。使用時,和往常一樣,僅僅需要提供一個圖片的 URI 即可,剩下的事情,F(xiàn)resco 會處理。

Gif 圖和 WebP 格式

是的,支持加載 Gif 圖,支持 WebP 格式。

圖像的呈現(xiàn)

Fresco 的 Drawees 設(shè)計(jì),帶來一些有用的特性:

  • 自定義居中焦點(diǎn)(對人臉等圖片顯示非常有幫助)
  • 圓角圖,當(dāng)然圓圈也行。
  • 下載失敗之后,點(diǎn)擊重現(xiàn)下載
  • 自定義占位圖,自定義overlay, 或者進(jìn)度條
  • 指定用戶按壓時的overlay

圖像的加載

Fresco 的 image pipeline 設(shè)計(jì),允許用戶在多方面控制圖片的加載:

  • 為同一個圖片指定不同的遠(yuǎn)程路徑,或者使用已經(jīng)存在本地緩存中的圖片
  • 先顯示一個低解析度的圖片,等高清圖下載完之后再顯示高清圖
  • 加載完成回調(diào)通知
  • 對于本地圖,如有EXIF縮略圖,在大圖加載完成之前,可先顯示縮略圖
  • 縮放或者旋轉(zhuǎn)圖片
  • 處理已下載的圖片
  • WebP 支持
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號