對Fresco的一些筆記

2021-07-02 15:53:27 字數 3510 閱讀 5408

fresco.initialize(context);

在布局檔案中加入命名空間

將******draweeview加入到布局檔案中

4.加上網路許可權開始載入

uri uri=uri.parse("

/liaohuqiu/fresco-docs-cn/docs/static/fresco-logo.png");

m******draweeview.setimageuri(uri);

5.剩下的,fresco會替你完成:

drawees

drawees 負責的呈現,包含幾個元件,有點像mvc模式。

draweeview

繼承於 view, 負責的顯示。

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

draweehierarchy

draweehierarchy 用於組織和維護最終繪製和呈現的drawable物件,相當於mvc中的m。

draweecontroller

draweecontroller 負責和 image loader 互動(預設是fresco中 image pipeline),可以建立乙個這個類的例項,來實現對所要顯示的做更多的控制。

draweecontrollerbuilder

draweecontrollers 由 draweecontrollerbuilder 採用 builder 模式建立,建立之後,不可修改。

image pipeline

fresco 的 image pipeline 負責的獲取和管理。可以來自遠端伺服器,本地檔案,或者content provider,本地資源。壓縮後的檔案快取在本地儲存中,bitmap資料快取在記憶體中。

m–>draweehierarchy

v –>draweeview

c –>draweecontroller

.facebook

.drawee

.view

.******draweeview

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"

//載入失敗的時候顯示的

fresco:failureimage="@drawable/error"

fresco:failureimagescaletype="centerinside"

fresco:retryimage="@drawable/retrying"

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"

//設定4個角的圓角半徑

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"

/>

通過imagepipelinefactory去初始化imagepipelineconfig

/** initializes fresco with the default config. */

public

static

void

initialize(context context)

imagepipelineconfig為imagepipeline的初始化工作提供了必需的引數,它的構建過程採用了builder模式。

imagepipelineconfig 中包含了很多引數,因為我們呼叫 fresco.initialize()的時候值傳遞了乙個 context 引數,所以 fresco 還沒有獲取任何使用者自定義的資料,因此全部使用預設值,builder 類只提供了構建的過程,而預設值則需要等到新建 imagepipelineconfig時建立。

public imagepipelineconfig build()
可以看出引數的初始化時在build中完成的。

private

builder(context context)

然後再判斷這個引數是否為空,為空表示使用預設值,不為空表示使用給定的引數

private

static

void

initializedrawee(context context)

繞後再去初始化draweeview

public class

draweeview

extends

draweehierarchy> extends

imageview

/** sets the controller. */

public void setcontroller(@nullable draweecontroller draweecontroller)

}

每次初始化的時候會去掉用gettopleveldrawable獲取最上層的drawable,更新需要顯示的影象

對synchronized this 的一些理解

一 當兩個併發執行緒訪問同乙個物件object中的這個synchronized this 同步 塊時,乙個時間內只能有乙個執行緒得到執行。另乙個執行緒必須等待當前執行緒執行完這個 塊以後才能執行該 塊。二 然而,當乙個執行緒訪問object的乙個synchronized this 同步 塊時,另乙個...

對synchronized this 的一些理解

一 當兩個併發執行緒訪問同乙個物件object中的這個synchronized this 同步 塊時,乙個時間內只能有乙個執行緒得到執行。另乙個執行緒必須等待當前執行緒執行完這個 塊以後才能執行該 塊。二 然而,當乙個執行緒訪問object的乙個synchronized this 同步 塊時,另乙個...

對synchronized this 的一些理解

對synchronized this 的一些理解 一 當兩個併發執行緒訪問同乙個物件object中的這個synchronized this 同步 塊時,乙個時間內只能有乙個執行緒得到執行。另乙個執行緒必須等待當前執行緒執行完這個 塊以後才能執行該 塊。二 然而,當乙個執行緒訪問object的乙個sy...