CENTER_INSIDE和FIT_CENTER比例类型有什么区别?


143

我不能告诉之间的区别ImageView.ScaleType.CENTER_INSIDEImageView.ScaleType.FIT_CENTER

CENTER_INSIDE

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

FIT_CENTER

计算一个比例,该比例将保持原始的src纵横比,但也将确保src完全适合dst。至少一个轴(X或Y)将完全适合。结果位于dst内部。

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

Answers:


145

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

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

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

使用FIT_CENTER,上面示例中的同一幅图像将适合整个容器,因为侧面相等,并且一条轴将与目的地匹配。使用FIT_CENTER,如果您有一个5“ x 10”的盒子和一个5“ x 7”的图像,则该图像将按比例缩放,因此可以容纳其中一个轴,但仍将图像居中目的地。

它们是相似的,但一个是使源尽可能多地填充目标,而另一个只是使图像居中于目标内部。

希望能澄清一点


注意,据我所知,center/ centerInside等实际上并未将图像居中。至少在图像小于视图的情况下。我可能是错的。
Timmmm 2012年

4
听起来FIT_CENTER(几乎)总是更有利。
2013年

2
这仍然没有道理,因为FIT_CENTER声明了这一点At least one axis (X or Y) will fit exactly。这是否暗示着两者都做同样的事情?
Christopher Perry

46
基本上,文档尚不清楚CENTER_INSIDE不会向上扩展(仅向下)

1
@Ken它忽略了图像大于视图框的情况,在这种情况下CENTER_INSIDE确实将其缩小,因此也变得不必要地复杂。其他答案则正确且简洁得多地说明了这一点。
利文(Livven)'16

245

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


使用的图像(100×100):

Android_Robot_100.png


小图像视图(75×50):

CENTER_INSIDE:

CENTER_INSIDE用于小图像视图

FIT_CENTER:

FIT_CENTER,用于小图像视图

两者CENTER_INSIDEFIT_CENTER缩小图像。


大图视图(300×200):

CENTER_INSIDE:

CENTER_INSIDE,可查看大图

FIT_CENTER:

FIT_CENTER,可查看大图

CENTER_INSIDE不会放大图像,但是FIT_CENTER会放大。


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


50

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


1

如果图像大于容器,则相同。如果图像较小,则容器CENTER_INSIDE不会按比例放大图像,而FIT_CENTER会放大图像。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.