将 ScaleType.MATRIX 设置为 Custom ImageView 缩小图像的初始显示
Setting ScaleType.MATRIX to Custom ImageView shrink the initial display of image
我正要创建自己的自定义 ImageView,所以我在下面制作 class。
class MyImageView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : AppCompatImageView(context, attrs, defStyleAttr) {
}
默认情况下(即没有 setScaleType(ScaleType.MATRIX)
),它看起来像下面(很适合屏幕)。
所以如果我在 init
中添加 setScaleType(ScaleType.MATRIX)
它就变成了下面这样。
class MyImageView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : AppCompatImageView(context, attrs, defStyleAttr) {
init {
setScaleType(ScaleType.MATRIX)
}
}
为什么缩小了?我怎样才能仍然使用 ScaleType.MATRIX
但它最初显示适合屏幕?
默认情况下,矩阵比例类型不应用任何比例类型,因此图像将调整为原始大小。
在这种情况下,图像比视图小,因此缩小得更小。如果不指定 ScaleType,它将 FitCenter,因此放大较小的图像以适合视图大小。
更多解释here
我正要创建自己的自定义 ImageView,所以我在下面制作 class。
class MyImageView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : AppCompatImageView(context, attrs, defStyleAttr) {
}
默认情况下(即没有 setScaleType(ScaleType.MATRIX)
),它看起来像下面(很适合屏幕)。
所以如果我在 init
中添加 setScaleType(ScaleType.MATRIX)
它就变成了下面这样。
class MyImageView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : AppCompatImageView(context, attrs, defStyleAttr) {
init {
setScaleType(ScaleType.MATRIX)
}
}
为什么缩小了?我怎样才能仍然使用 ScaleType.MATRIX
但它最初显示适合屏幕?
默认情况下,矩阵比例类型不应用任何比例类型,因此图像将调整为原始大小。
在这种情况下,图像比视图小,因此缩小得更小。如果不指定 ScaleType,它将 FitCenter,因此放大较小的图像以适合视图大小。
更多解释here