Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android資訊 >> 自動釋放內存!Facebook推出強大Android圖片庫Fresco

自動釋放內存!Facebook推出強大Android圖片庫Fresco

編輯:Android資訊

快速而又高效的顯示圖片對 Android 設備來說是件極其重要的事情,但在過去的幾年裡,在有效存儲圖像方面我們面臨了很多問題。圖片太大,而手機又只有很小的內存,特別是 Android 設備還要將內存分割給各個應用。所以,太多的圖片總會耗去大部分的內存,從而導致應用的崩潰。

為了解決這一問題,Facebook 最近推出了一款用於 Android 應用中展示圖片的強大圖片庫 Fresco,它能夠從網絡、本地存儲和本地資源中加載圖片。而且,為了節省數據和 CPU,它擁有三級緩存。此外,Fresco 在顯示方面是用了 Drawees,可以顯示占位符,直到圖片加載完成。而當圖片從屏幕上消失時,會自動釋放圖片所占的內存。Fresco 支持 Android 2.3 及以上版本,目前已托管至 Github 上。

主要特性:

  • 內存

解壓後的圖片和 Android 的位圖都會占據很大的內存,這導致 Java 垃圾收集器更頻繁的運行,也讓應用變得更加緩慢,這一問題在沒有對垃圾收集器進行完善的 Android 5.0 上尤為嚴重。

在 Android 4.x 及以下版本,Fresco 將圖片放置在 Android 內存的一個特殊位置。這可以確保當圖像不在屏幕上顯示時,可以自動釋放它們所占的內存。讓應用運行的更快速,且不易崩潰。

使用 Fresco 的應用,即使在配置低端的設備上也能正常運行,而且你無需經常性地去擔心圖片的內存占用情況。

  • Streaming

Web 上的漸進式(Progressive)JPEG 圖片已經存在多年,打開文件過程中,會先顯示整個圖片的模糊輪廓,隨著掃描次數的增加,圖片變得越來越清晰。這種格式可以說是網絡較慢情況下的救星,通過圖片的輪廓知道正在加載的圖片大概是什麼。

Android 自己的圖片庫不支持 streaming,而 Fresco 可以,只需指定一個 URI,你的應用程序就可以隨著數據的到來,自動更新它的顯示。

  • 動畫

動畫 GIF 和 WebP 應該是應用的難點,每一幀都是一個大型的位圖,而每個動畫都是一系列的幀。Fresco 則負責加載和處理這些幀及管理它們的內存。

  • Drawing

Fresco 在顯示方面使用了 Drawees,Fresco 的 Drawees 能夠顯示占位符,直到圖片已加載,並自動顯示到圖像到達時: 

  1. 將圖片擴展至自定義的焦點,而不是作為處理的中心。
  2. 使用圓角化或圓形來顯示圖像。
  3. 如果網絡加載失敗的話,用戶可以點擊占位符重新加載圖像。
  4. 顯示自定義背景、浮窗小部件(overlays)或圖像上的進度條。
  5. 當用戶點擊圖片,自定義浮窗小部件。
  • 加載

Fresco 的圖像管道可以讓你以多種方法來自定義加載: 

  1. 為一個圖像指定不同的 URI,從中選取一個已經緩存的顯示。
  2. 優先顯示低分辨率圖像,待數據到達後交換到高的分辨率。
  3. 如果圖像有 EXIF 縮略圖,首先顯示縮略圖,直到整個圖片被加載出來(只針對本地圖片)。
  4. 調整或旋轉圖像。

即使是在老版的 Android 上也可以解碼 WebP 圖像,只不過不是全部支持。

傳送門:Fresco 官網、Github 托管地址

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved