我无法区分 ImageView.ScaleType.CENTER_INSIDE
和 ImageView.ScaleType.FIT_CENTER
。
CENTER_INSIDE
均匀缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)都等于或小于视图的相应尺寸(减去填充)。
FIT_CENTER
计算将保持原始 src 纵横比的比例,但也将确保 src 完全适合 dst。至少一个轴(X 或 Y)将完全适合。结果以 dst 为中心。
有人可以阐明两者之间的区别吗?
这是 CENTER_INSIDE
和 FIT_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_INSIDE
和 FIT_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 署名许可中描述的条款使用。
FIT_CENTER 将确保源完全适合容器内部,并且水平轴或垂直轴都将是准确的。
CENTER_INSIDE 将使图像在容器内居中,而不是使边缘完全匹配。
因此,如果您有一个 10" x 10" 的方形框和一个 8"x8" 的图像,则 CENTER_INSIDE 将直接位于框的中间,源容器和目标容器之间为 2"。
使用 FIT_CENTER,上例中的相同图像将适合整个容器,因为边相等,并且一个轴将匹配目标。使用 FIT_CENTER,如果您有一个 5" x 10" 的框和一个 5" x 7" 的图像,图像将按比例缩放,因此其中一个轴将适合,但仍会将图像居中在目的地。
它们是相似的,但制作一个是为了使源尽可能地填充目标,而另一个只是将图像居中放置在目标内部。
希望澄清一点
如果图像大于容器,它们是相同的。如果图像较小,则容器 CENTER_INSIDE 不会放大图像,而 FIT_CENTER 会。
center
/centerInside
等实际上并没有使图像居中。至少在图像小于视图的情况下。我可能是错的。FIT_CENTER
声明了At least one axis (X or Y) will fit exactly
。这不意味着两者都做同样的事情吗?CENTER_INSIDE
确实将其缩小,因此也变得不必要地复杂。其他答案正确且更简洁地解释了这一点。