第 1 章 配置和使用

2018-02-24 15:57 更新

下載Fresco

類庫發(fā)布到了Maven中央庫:

Gradle:

dependencies {
  compile 'com.facebook.fresco:fresco:0.1.0+'
}

Maven:

<dependency>
  <groupId>com.facebook.fresco</groupId>
  <artifactId>fresco</artifactId>
  <version>LATEST</version>
</dependency>

Eclipse

~呵呵~

配置和開始使用

如果你僅僅是想簡單下載一張網(wǎng)絡圖片,在下載完成之前,顯示一張占位圖,那么簡單使用 SimpleDraweeView 即可。

在Application 初始化時:

Fresco.initialize(context);~~~

在xml布局文件中, 加入命名空間:

~~~xml
<!-- 其他元素 -->
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto">

加入SimpleDraweeView:

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="20dp"
    android:layout_height="20dp"
    fresco:placeholderImage="@drawable/my_drawable"
  />

開始加載圖片

draweeView.setImageURI("http://site.com/uri");

剩下的,F(xiàn)resco會替你完成:

  • 顯示占位圖直到加載完成;
  • 下載圖片;
  • 緩存圖片;
  • 圖片不再顯示時,從內(nèi)存中移除;

等等等等。

關鍵概念

Drawees

Drawees 負責圖片的呈現(xiàn),包含幾個組件,有點像MVC模式。

DraweeView

繼承于 View, 負責圖片的顯示。

一般情況下,使用SimpleDraweeView 即可. 簡單的用法,在這個頁面:開始使用 。

它支持很多自定義效果,參見這里: 自定義顯示效果.

DraweeHierarchy

繼承于 Drawable, 包含用于繪制的圖像數(shù)據(jù)。MVC中的M。

如果你想在Java代碼中自定義圖片的展示,可以通過這類實現(xiàn),具體的請參考這里: 在Java代碼中自定義顯示效果

DraweeController

DraweeController 負責和 image loader 交互(默認是Fresco中 image pipeline),可以創(chuàng)建一個這個類的實例,來實現(xiàn)對所要顯示的圖片做更多的控制。

DraweeControllerBuilder

DraweeControllersDraweeControllerBuilder 采用 Builder 模式創(chuàng)建,創(chuàng)建之后,不可修改。具體參見: 使用ControllerBuilder。

Listeners

使用 ControllerListener 的一個場景就是設置一個 Listener監(jiān)聽圖片的下載。

Image Pipeline

Fresco 的 Image Pipeline 負責圖片的獲取和管理。圖片可以來自遠程服務器,本地文件,或者Content Provider,本地資源。壓縮后的文件緩存在本地存儲中,Bitmap數(shù)據(jù)緩存在內(nèi)存中。

在5.0系統(tǒng)之后,Image Pipeline 使用`pinned purgeables*將Bitmap數(shù)據(jù)存在native 內(nèi)存中。這要求圖片不使用時,要顯示地釋放內(nèi)存。

SimpleDraweeView 自動處理了這個釋放過程,所以沒有特殊情況,盡量使用SimpleDraweeView,在特殊的場合,如果有需要,也可以直接控制Image Pipeline。

支持的URIs

Fresco 支持許多URI格式。

特別注意:Fresco 不支持 相對路徑的URI. 所有的URI都必須是絕對路徑,并且?guī)显揢RI的scheme。

如下:

類型 Scheme 示例
遠程圖片 http://,``https:// HttpURLConnection 或者參考 使用其他網(wǎng)絡加載方案
本地文件 file:// FileInputStream
Content provider content:// ContentResolver
asset目錄下的資源 asset:// AssetManager
res目錄下的資源 res:// Resources.openRawResource

注意,只有圖片資源才能使用在Imagepipeline中,比如(PNG)。其他資源類型,比如字符串,或者XML Drawable在Imagepipeline中沒有意義。所以加載的資源不支持這些類型。

像ShapeDrawable這樣聲明在XML中的drawable可能引起困惑。注意到這畢竟不是圖片,如果想把這樣的drawable作為圖像顯示。

那么把這個drawable設置為占位圖,然后把URI設置為null。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號