【问题标题】:What's the difference between CENTER_INSIDE and FIT_CENTER scale types?CENTER_INSIDE 和 FIT_CENTER 比例类型有什么区别?
【发布时间】:2012-07-06 10:14:30
【问题描述】:

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

CENTER_INSIDE

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

FIT_CENTER

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

有人能说明两者的区别吗?

【问题讨论】:

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

标签: android imageview android-imageview scaling scaletype


【解决方案1】:

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


使用的图像 (100 × 100):


小图像视图 (75 × 50):

CENTER_INSIDE:

FIT_CENTER:

CENTER_INSIDEFIT_CENTER 都会缩小图像。


大图像视图(300 × 200):

CENTER_INSIDE:

FIT_CENTER:

CENTER_INSIDE 不会放大图像,FIT_CENTER 会。


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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      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 确实将其缩小,因此也变得不必要的复杂。其他答案正确且更简洁地解释了这一点。
      猜你喜欢
      • 2010-10-02
      • 2010-12-11
      • 2013-04-10
      • 2023-01-04
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2021-12-21
      相关资源
      最近更新 更多