我有两个图像并不总是完全适合屏幕。因此我想裁剪它们(像CENTER_CROP那样),但是以某种方式使图像的底部区域始终可见。两张图像都填充整个屏幕宽度和屏幕高度的每个1/2。ImageView缩放BOTTOM_CROP
我发现了一个类似的解决方案在这里: ImageView scaling TOP_CROP 接受的解决方案完美地工作,但我无法弄清楚如何改变矩阵,使其BOTTOM_CROP代替。
工作代码TOP_CROP:
setScaleType(ScaleType.MATRIX);
Matrix matrix = getImageMatrix();
float scaleFactor = (getWidth() - Data.getImgPadding(c))/(float) getDrawable().getIntrinsicWidth();
matrix.setScale(scaleFactor, scaleFactor, 0, 0);
setImageMatrix(matrix);
注:填充到正确的设置编程,因此它需要被包括在计算中(该值由Data.getImgPadding(c)中读出)。
对于BOTTOM_CROP我想我会用:
matrix.setScale(scaleFactor, scaleFactor, 0, getHeight());
但它不是真正的工作,第一个图像显示或多或少正确的底部,但有某种下方缘 - 底部图像边框应该完全位于ImageView边框的底部。我假设我不得不使用填充,但我不知道如何在水平填充值设置后计算“新”图像高度。
然而,更大的问题是(无论什么原因),当我在setScale()中设置py值时,第二个ImageView突然变空了......两个视图都使用相同的布局xml,但这不可能是原因因为原始代码在两者上都能很好地工作。