ChatGPT解决这个技术问题 Extra ChatGPT

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

我无法区分 ImageView.ScaleType.CENTER_INSIDEImageView.ScaleType.FIT_CENTER

CENTER_INSIDE

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

FIT_CENTER

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

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

它们是相同的,只是如果盒子实际上比图像大,CENTER_INSIDE 不会展开图像
@Fattie 谢谢!一旦你知道它就有意义了。

P
Pang

这是 CENTER_INSIDEFIT_CENTER 之间区别的图形说明。

使用的图像(100 × 100):

https://i.stack.imgur.com/PbJDq.png

小图像视图(75 × 50):

CENTER_INSIDE:

https://i.stack.imgur.com/tN80U.png

FIT_CENTER:

https://i.stack.imgur.com/ngP7L.png

CENTER_INSIDEFIT_CENTER 都会缩小图像。

大图像视图(300 × 200):

CENTER_INSIDE:

https://i.stack.imgur.com/hROQW.png

FIT_CENTER:

https://i.stack.imgur.com/Agz87.png

CENTER_INSIDE 不会放大图像,FIT_CENTER 会。

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


B
BlackHatSamurai

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

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

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

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

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

希望澄清一点


请注意,据我所知,center/centerInside 等实际上并没有使图像居中。至少在图像小于视图的情况下。我可能是错的。
听起来 FIT_CENTER (几乎)总是更有利。
这仍然没有意义,因为 FIT_CENTER 声明了 At least one axis (X or Y) will fit exactly。这不意味着两者都做同样的事情吗?
基本上,文档并不清楚 CENTER_INSIDE 不会向上扩展(仅向下)
@Ken 它忽略了图像大于视图框的情况,在这种情况下 CENTER_INSIDE 确实将其缩小,因此也变得不必要地复杂。其他答案正确且更简洁地解释了这一点。
Z
Zarokka

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