162

我分不清 和 之间的ImageView.ScaleType.CENTER_INSIDE区别ImageView.ScaleType.FIT_CENTER

CENTER_INSIDE

均匀缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)都等于或小于视图的相应尺寸(减去填充)。

FIT_CENTER

计算将保持原始 src 纵横比的比例,但也将确保 src 完全适合 dst。至少一个轴(X 或 Y)将完全适合。结果以 dst 为中心。

有人可以阐明两者之间的区别吗?

4

3 回答 3

268

CENTER_INSIDE这是和之间区别的图形说明FIT_CENTER


使用的图像(100 × 100):

Android_Robot_100.png


小图像视图(75 × 50):

CENTER_INSIDE:

CENTER_INSIDE 用于小图像视图

FIT_CENTER:

适合小图像视图的 FIT_CENTER

两者都CENTER_INSIDE缩小FIT_CENTER图像。


大图像视图(300 × 200):

CENTER_INSIDE:

CENTER_INSIDE 用于大图像视图

FIT_CENTER:

适合大图像视图的 FIT_CENTER

CENTER_INSIDE不放大图像,FIT_CENTER可以。


Android 机器人是从 Google 创建和共享的作品中复制或修改的,并根据知识共享 3.0 署名许可中描述的条款使用。

于 2013-10-10T02:38:13.077 回答
159

FIT_CENTER 将确保源完全适合容器内部,并且水平轴或垂直轴都将是准确的。

CENTER_INSIDE 将使图像在容器内居中,而不是使边缘完全匹配。

因此,如果您有一个 10" x 10" 的方形框和一个 8"x8" 的图像,则 CENTER_INSIDE 将直接位于框的中间,源容器和目标容器之间为 2"。

使用 FIT_CENTER,上例中的相同图像将适合整个容器,因为边相等,并且一个轴将匹配目标。使用 FIT_CENTER,如果您有一个 5" x 10" 的框和一个 5" x 7" 的图像,图像将按比例缩放,因此其中一个轴将适合,但仍会将图像居中在目的地。

它们是相似的,但制作一个是为了使源尽可能地填充目标,而另一个只是将图像居中放置在目标内部。

希望澄清一点

于 2012-07-05T23:47:59.243 回答
59

如果图像大于容器,它们是相同的。如果图像较小,则容器 CENTER_INSIDE 不会放大图像,而 FIT_CENTER 会。

于 2013-06-18T13:46:16.600 回答