ImageView.ScaleType="MATRIX" 是什么意思:Android

what is the meaning of ImageView.ScaleType="MATRIX" : Android

我知道 matrix,它的结构和关于图像视图比例类型的工作。但是,

  1. 我找不到ImageView.ScaleType="MATRIX"的确切含义。通过声明这个,绘制图像视图时到底发生了什么。

  2. 什么时候可以使用ImageView.ScaleType="MATRIX"

  3. 它与 FIT_END & FIT_START

  4. 有何不同

我用谷歌搜索并参考了 official link 但没能找到确切的答案。

据我了解,对每个 ImageView 的 ScaleType 属性使用以下详细信息

中心

在视图中居中显示图像,不缩放。

centerCrop

缩放图像,使 x 和 y 维度都大于或等于视图,同时保持图像纵横比;裁剪图像中超出视图大小的任何部分;使图像在视图中居中。

中心内

缩放图像以适合视图内部,同时保持图像纵横比。如果图像已经小于视图,那么这与中心相同。

fitCenter

缩放图像以适合视图内部,同时保持图像纵横比。至少有一个轴将与视图完全匹配,结果在视图内居中。

fitStart

与 fitCenter 相同,但与视图的左上角对齐。

fitEnd

与 fitCenter 相同,但与视图的右下角对齐。

fitXY

缩放 x 和 y 维度以精确匹配视图大小;不保持图像纵横比。

矩阵

使用提供的矩阵缩放图像 class。可以使用 setImageMatrix 方法提供矩阵。矩阵 class 可用于对图像应用旋转等变换。

  1. ImageView.ScaleType.MATRIX 允许您使用 Matrix 缩放图像。您可以使用 ImageView.setImageMatrix(matrix) 设置矩阵。因此,通过将 scaleType 声明为 MATRIX 你是说你想使用显式 Matrix 来做到这一点。
  2. 您可以随时使用 imageView.setScaleType(ImageView.ScaleType.MATRIX) 根据需要自定义图像缩放、旋转等方式。
  3. FIT_ENDFIT_START 是默认的比例类型。因此,例如,如果您使用 FIT_END,您的图像将保持原始纵横比,并且它将对齐图像视图的右边缘和下边缘的结果。所以基本上,区别在于 FIT_ENDFIT_START 是 "presets" 而 MATRIX 你声明你想使用你自己的矩阵来缩放。

阅读 the docs 了解更多信息

您链接到的文档提供了您正在寻找的答案。

Scale using the image matrix when drawing. The image matrix can be set using setImageMatrix(Matrix). From XML, use this syntax: android:scaleType="matrix"

虽然你提到你已经知道图形上下文中的Matrix是什么,但为了其他遇到这个问题的用户,我将简要解释一下——矩阵可以用来操纵canvas 绘制图形时。对于 ImageView 的矩阵,您可以使用它来平移、翻转、旋转或以其他方式在屏幕上四处移动图像。

when i can use ImageView.ScaleType="MATRIX"

您可以随时使用 ImageView。您可以在 Java 代码中调用 setScaleType() 以使用矩阵比例类型,或者您可以在布局 XML.

中添加 android:scaleType="matrix" 属性

how it differs from FIT_END & FIT_START

FIT_END and FIT_START 实际上都使用 Matrix 来缩放图像。两者都保持原始纵横比并使图像完全适合视图,但对齐结果不同。 End 会将缩放后的图像与 ImageView 的末尾对齐,而 start 会将缩放后的图像与 ImageView

的开头对齐

ScaleType="MATRIX"

一个Matrix是根据用户的捏合手势比例因子构造和缩放的,然后ImageView集是基于这个缩放矩阵。 请访问这里Android ImageView ScaleType

勾选Effect.And https://guides.codepath.com/android/Working-with-the-ImageView