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...