Подтвердить что ты не робот

Масштабируйте изображение, чтобы заполнить весь ImageView на Android

Я хотел бы увеличить изображение, чтобы оно занимало весь размер ImageView. Это немного отличается от использования scaleType=fit_center потому что fit_center оставит полосы вокруг изображения, если соотношение сторон изображения не совсем соответствует соотношению сторон ImageView. Вместо этого я хотел бы, чтобы изображение центрировалось и масштабировалось, чтобы полностью заполнить окружающий вид, с любым лишним срезом.

Я могу сделать это путем вычисления моей собственной матрицы изображений во время onCreate():

final Display display = getWindowManager().getDefaultDisplay();
final float screenWidth = display.getWidth();
final float screenHeight = display.getHeight();
final float imageWidth = splashView.getDrawable().getIntrinsicWidth();
final float imageHeight = splashView.getDrawable().getIntrinsicHeight();
final Matrix splashMatrix = new Matrix();
final float scale = Math.max(screenHeight/imageHeight,screenWidth/imageWidth);
splashMatrix.postScale( scale, scale );
splashView.setImageMatrix(splashMatrix);

Это прекрасно работает, но кажется, что должно быть легче. Кто-нибудь знает способ увеличения изображения в ImageView, сохраняя при этом пропорции изображения и полностью заполняя ImageView?

(Примечание: в моем случае мой ImageView занимает весь экран, поэтому я использую getWindowManager().getDisplay() чтобы найти нужный размер изображения. Вы не можете использовать splashView.getWidth()/getHeight() потому что представление имеет пока не выложено и не имеет размера)

4b9b3361

Ответ 3

В некоторых случаях все, что вам нужно, это

android:adjustViewBounds="true"