本教程內(nèi)容來(lái)源于:http://fresco-cn.org
采用 知識(shí)共享 署名 4.0 國(guó)際 許可協(xié)議 進(jìn)行許可
對(duì)于 Drawee 的各種效果配置,其中一些是支持縮放類(lèi)型的。
| 類(lèi)型 | 描述 |
|---|---|
| center | 居中,無(wú)縮放 |
| centerCrop | 保持寬高比縮小或放大,使得兩邊都大于或等于顯示邊界。居中顯示。 |
| focusCrop | 同centerCrop, 但居中點(diǎn)不是中點(diǎn),而是指定的某個(gè)點(diǎn) |
| centerInside | 使兩邊都在顯示邊界內(nèi),居中顯示。 如果圖尺寸大于顯示邊界,則保持長(zhǎng)寬比縮小圖片。 |
| fitCenter | 保持寬高比,縮小或者放大,使得圖片完全顯示在顯示邊界內(nèi)。居中顯示 |
| fitStart | 同上。但不居中,和顯示邊界左上對(duì)齊 |
| fitEnd | 同fitCenter, 但不居中,和顯示邊界右下對(duì)齊 |
| fitXY | 不保存寬高比,填充滿顯示邊界 |
| none | 如要使用tile mode顯示, 需要設(shè)置為none |
這些縮放類(lèi)型和Android ImageView 支持的縮放類(lèi)型幾乎一樣.
唯一不支持的縮放類(lèi)型是matrix. Fresco 提供了focusCrop 作為補(bǔ)充。通常這個(gè)縮放效果更佳。
centerCrop縮放模式會(huì)保持長(zhǎng)寬比,縮放圖片,填充滿顯示邊界,居中顯示。這個(gè)縮放模式在通常情況下很有用。
但是對(duì)于人臉等圖片時(shí),一味地居中顯示,這個(gè)模式可能會(huì)裁剪掉一些有用的信息。
以人臉圖片為例,借助一些類(lèi)庫(kù),我們可以識(shí)別出人臉?biāo)谖恢?。如果可以設(shè)置以人臉位置居中裁剪顯示,那么效果會(huì)好很多。
Fresco的focusCrop縮放模式正是為此而設(shè)計(jì)。只要提供一個(gè)居中聚焦點(diǎn),顯示時(shí)就會(huì)盡量以此點(diǎn)為中心。
居中點(diǎn)是以相對(duì)方式給出的,比如(0.5f, 0.5f)就是居中顯示,(0f, 0f)就是左上對(duì)齊顯示。
如果要使用此縮放模式,首先指定縮放模式。在XML:
fresco:actualImageScaleType="focusCrop"
在Java代碼中
PointF focusPoint;
// your app populates the focus point
mSimpleDraweeView
.getHierarchy()
.setActualImageFocusPoint(focusPoint);
如果你要使用tile mode進(jìn)行顯示,那么需要將scale type 設(shè)置為none.