摘要:中設計有一個叫做模塊,它會在圖片加載完成前顯示占位圖,加載成功后自動替換為目標圖片。當圖片不再顯示在屏幕上時,它會及時地釋放內存和空間占用。大的內存占用勢必引發更加頻繁的。
Fresco圖片框架簡介及使用
一. 特性介紹 1. Image PipelineFresco是FaceBook退出了一個Android開源圖片管理框架,它提供了圖片下載、漸進式加載、內存管理等功能,很大程度上把程序員從繁瑣的圖片管理工作中解放了出來,官網地址,Fresco API。
Fresco 中設計有一個叫做 Image Pipeline 的模塊。它負責從網絡,從本地文件系統,本地資源加載圖片。為了最大限度節省空間和CPU時間,它含有3級緩存設計(2級內存,1級磁盤)。
2. DraweesFresco 中設計有一個叫做 Drawees 模塊,它會在圖片加載完成前顯示占位圖,加載成功后自動替換為目標圖片。當圖片不再顯示在屏幕上時,它會及時地釋放內存和空間占用。
3. 內存管理解壓后的圖片,即Android中的Bitmap,占用大量的內存。大的內存占用勢必引發更加頻繁的GC。在5.0以下,GC將會顯著地引發界面卡頓。
在5.0以下系統,Fresco將圖片放到一個特別的內存區域。當然,在圖片不顯示的時候,占用的內存會自動被釋放。這會使得APP更加流暢,減少因圖片內存占用而引發的OOM。
Fresco的Image Pipeline允許你用很多種方式來自定義圖片加載過程,比如:
為同一個圖片指定不同的遠程路徑,或者使用已經存在本地緩存中的圖片
先顯示一個低清晰度的圖片,等高清圖下載完之后再顯示高清圖
加載完成回調通知
對于本地圖,如有EXIF縮略圖,在大圖加載完成之前,可先顯示縮略圖
縮放或者旋轉圖片
對已下載的圖片再次處理
5. 圖片繪制Fresco 的 Drawees 設計,帶來一些有用的特性:
自定義居中焦點
圓角圖,當然圓圈也行
下載失敗之后,點擊重現下載
自定義占位圖,自定義overlay, 或者進度條
指定用戶按壓時的overlay
6. 圖片的漸進式呈現漸進式的JPEG圖片格式已經流行數年了,漸進式圖片格式先呈現大致的圖片輪廓,然后隨著圖片下載的繼續,呈現逐漸清晰的圖片,這對于移動設備,尤其是慢網絡有極大的利好,可帶來更好的用戶體驗。
Android 本身的圖片庫不支持此格式,但是Fresco支持。使用時,和往常一樣,僅僅需要提供一個圖片的URI即可,剩下的事情,Fresco會處理。
加載Gif圖和WebP動圖在任何一個Android開發者眼里看來都是一件非常頭疼的事情。每一幀都是一張很大的Bitmap,每一個動畫都有很多幀。Fresco讓你沒有這些煩惱,它處理好每一幀并管理好你的內存。
支持WebP解碼,即使在早先對WebP支持不完善的Android系統上也能正常使用!
二、Fresco的簡單使用 1. 在Gradle配置中加入Fresco的依賴dependencies { compile "com.facebook.fresco:fresco:0.14.1" }2. 在你的Application中初始化Fresco
public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }
注冊MyApplication,并配置網絡權限
3. 在布局文件中使用Fresco自定義的圖片控件SimpleDraweeView,注意引入Fresco命名空間。
4.在Activity使用SimpleDraweeView,設置其Uri
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.drawee_img); Uri uri = Uri.parse("http://www.people.com.cn/mediafile/pic/20161022/76/4315084153778263996.jpg"); draweeView.setImageURI(uri); //initView(); }5.效果展示
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70568.html
摘要:首先這是對的源碼分析,所以在看這篇文章之前你應該要有使用的基礎,如果沒有的強烈推薦看下官方文檔。在中統一由來替代。關于后續文章會詳細分析。在其內部的,是用來記錄事件的傳遞,方便的調試。這次主要是分析了中的基本組件與它的子類。 在Android中圖片加載的框架很多,例如:Fresco、Picasso、Glide與Imageloader。它們都有各自的優點,但總的來說,使用起來方便簡單、可...
閱讀 3046·2023-04-26 02:27
閱讀 2763·2021-11-22 13:54
閱讀 902·2021-11-12 10:36
閱讀 3753·2021-10-09 09:44
閱讀 3178·2021-10-09 09:41
閱讀 1223·2021-09-22 10:02
閱讀 2833·2019-08-30 15:56
閱讀 3106·2019-08-30 11:02