Fresco用法介紹

1.Fresco介紹:

????(1).Fresci是目前最強大的圖片加載組件
????(2).Fresco中設計有一個叫做image pipeline的模塊,它負責從網(wǎng)絡,從本地文件系統(tǒng),本地資源加載圖片。為了最大限度節(jié)省空間和cpu時間,它含有3級緩存設計(2級內存,1級文件)。
????(3).Fresco中設計有一個叫做Drawees模塊,方便地顯示loading圖。當圖片不再顯示屏幕上時,及時地釋放內存和空間占用。
????(4).Fresco支持Android2.3(API level 9)及其以上系統(tǒng)

2.Fresco特點

2.1內存管理:

????2.1.1 一個沒有壓縮的圖片,即Android中的Bitmap,占用大量的內存,大的內存占用勢必引發(fā)更加頻繁的GC。在5.0以下,GC將會顯著地引用界面卡頓
????2.1.2 在5.0以下系統(tǒng),F(xiàn)resco將圖片放到一個特別的內存區(qū)域。當然,在圖片不顯示的時候,占用的內存會自動被釋放。這個使得APP更加流暢,減少因圖片內存占用而引發(fā)的OOM。
????2.1.3 給圖片分配內存的方式:Fresco:Ashmem(系統(tǒng)匿名共享內存);其它:Java Heap

2.2漸進式呈現(xiàn)圖片:

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

2.3Gif圖和WebP格式

????2.3.1 支持加載Gif圖,支持WebP格式

2.4 圖像的呈現(xiàn)

????2.4.1自定義居中焦點(對人臉等圖片顯示非常有幫助)
????2.4.2圓角圖,當然圓圈也行
????2.4.3下載失敗之后,點擊重新下載
????2.4.4自定義占位圖,自定義overlay或進度條
????2.4.5指定用戶按壓時的overlay

2.5圖像的加載

????2.5.1 為同一個圖片指定不同的遠程下載路勁,或者使用已經存在本地緩存中的圖片
????2.5.2 先顯示一個低解析度的圖片,等高清圖下載完成之后再顯示高清圖
????2.5.3 加載完成回調通知
????2.5.4 對于本地圖,如有EXIF縮略圖,在大圖加載完成之后,可先顯示縮列圖
????2.5.5 縮放或者旋轉圖片
????2.5.6 處理已下載的圖片
????2.5.7 WebP支持

3.Fresco基本使用

<com.facebook.drawee.view.SimpleDraweeView
  android:id="@+id/my_image_view"
  android:layout_width="20dp"  //寬
  android:layout_height="20dp" //高
  fresco:fadeDuration="300"
  fresco:actualImageScaleType="focusCrop" 
  fresco:placeholderImage="@color/wait_color"     //下載成功之前顯示的圖片
  fresco:placeholderImageScaleType="fitCenter"    //設置圖片縮放,通常使用FocusCrop,該屬性值會通過算法把人頭像放在中間
  fresco:failureImage="@drawable/error" //下載失敗的時候顯示的圖片
  fresco:failureImageScaleType="centerInside" //設置圖片縮放
  fresco:retryImage="@drawable/retrying"http://加載失敗,提示用戶點擊重新加載的圖片(會覆蓋failureImage的圖片)
  fresco:retryImageScaleType="centerCrop"
  fresco:progressBarImage="@drawable/progress_bar"
  fresco:progressBarImageScaleType="centerInside"
  fresco:progressBarAutoRotateInterval="1000"
  fresco:backgroundImage="@color/blue"
  fresco:overlayImage="@drawable/watermark"
  fresco:pressedStateOverlayImage="@color/red"
  fresco:roundAsCircle="false"  //是不是設置圓形方式顯示圖片
  fresco:roundedCornerRadius="1dp"
  fresco:roundTopLeft="true"
  fresco:roundTopRight="false"
  fresco:roundBottomLeft="false"
  fresco:roundBottomRight="true"
  fresco:roundWithOverlayColor="@color/corner_color"
  fresco:roundingBorderWidth="2dp"
  fresco:roundingBorderColor="@color/border_color"
/>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容