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