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

dwd4 9年前發布 | 21K 次閱讀 Facebook

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

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

為了解決這一問題,非死book 最近推出了一款用于 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 托管地址

來自: www.iteye.com
 本文由用戶 dwd4 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!