四、Fresco——Drawee Image屬性詳解
定義
這篇文章概述了能在Drawee中顯示的圖形的種類,並且該如何 設定它們。
除了實際的圖片,Drawee的所有屬性都能在xml中設定,xml中的Image屬性值要麼是Android drawable,要麼是color resource。
同時,也能通過GenericDraweeHierarchyBuilder類的方法設定Image,Image可以是資源圖片或drawable的子類,少數的drawable可能被縮放。
本質
我們要顯示的圖片,必須指定一個源——來自網路、app資源、本地儲存或content provider,其他的都是可選或裝飾性的,這是控制器的屬性,並不是層次結構(hierarchy)的,因此,使用 setImageURI方法,或動態設定一個控制器,除了縮放型別之外,hierarchy為實質的圖片提供了其他的方法:
1. 焦點(scale type為focusCrop時可用)
2. 顏色過濾器
預設的scale type為centerCrop
Placeholder
Placeholder,即佔位符,當View第一次出現在螢幕之後,且圖片加載出來之前,placeholder會一直顯示在view上,
XML attribute: placeholderImage
Hierarchy builder method: setPlaceholderImage
Hierarchy method: setPlaceholderImage
Default value: a transparent ColorDrawable
Default scale type: centerInside
載入失敗
當載入圖片出錯時,failure image會顯示出來,大部分的原因是URI不合法或者網路沒有連線。
XML attribute: failureImage
Hierarchy builder method: setFailureImage
Default value: The placeholder image
Default scale type: centerInside
重新載入
如果controller開啟了點選重試的特性,那麼失敗圖示不會顯示,取而代之的是重試圖示。
我們必須構建自己的Controller來實現這一點:
.setTapToRetryEnabled(true)
進度條
如果指定了進度條,那麼它會在最終的Image設定之前,作為一個浮層顯示在Drawee上,目前進度條會在整個載入過程中起作用,但是目前還不支援進度的百分比。
XML attribute: progressBarImage
Hierarchy builder method: setProgressBarImage
Default value: None
Default scale type: centerInside
背景色
背景圖是最先被渲染的,在其他的hierarchy的最底層,xml中只能指定一個背景圖,但是可以多次在java程式碼中設定;另外背景圖背部支援縮放,它會被縮放到Drawee的尺寸
XML attribute: backgroundImage
Hierarchy builder method: setBackground, setBackgrounds
Default value: None
Default scale type: N/A
浮層&水印
與背景圖相反,浮層是最後被渲染的,在其他層的頂層。
與背景圖相同的是,只能在xml中指定一個,但可以多次在java程式碼中設定,浮層也不支援設定縮放,它會被縮放到Drawee同樣的大小。
XML attribute: overlayImage
Hierarchy builder method: setOverlay, setOverlays
Default value: None
Default scale type: N/A
被按壓後的浮層圖
當用戶按壓圖片時,該圖會被顯示出來,例如,如果Drawee正在顯示一個按鈕,當它被點選時,浮層會顯示不同的顏色。
被按壓的浮層不支援縮放
XML attribute: pressedStateOverlayImage
Hierarchy builder method: setPressedStateOverlay
Default value: None
Default scale type: N/A