我有兩個圖像並不總是完全適合屏幕。因此我想裁剪它們(像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,但這不可能是原因因爲原始代碼在兩者上都能很好地工作。