Как установить минимальное масштабируемое значение для ImageView? - PullRequest
0 голосов
/ 07 февраля 2019

скажем, у меня в папке для рисования есть изображение 'A' с разрешением 400x400, у меня источник ImageView установлен на A, этот ImageView находится внутри линейного макета или макета карты.

Я хочумасштабирование изображения в зависимости от устройства. Я хочу, чтобы оно было, скажем, 120dp X 120dp для 4-дюймового устройства, но я хочу, чтобы оно масштабировалось до больших пикселей в зависимости от размера дисплея

enter image description here

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

Исправлено это путем использования компоновки с ограничениями и установки ширины и высоты изображения в 0dp, что делает его масштабированным в соответствии с размером источника изображения.

0 голосов
/ 08 февраля 2019

Используйте ScaleType в ImageView centerInside.

Или

Вы можете сделать новый Bitmap в соответствии с размером экрана, сохранив Aspect Ratio.

Предположим, что размер вашего изображения составляет 400x300 (ШхВ)

И ваш ожидаемый ImageView Размер составляет 200x400

И вы хотите подогнать его под ширину ImageView Тогда вывычислит новые Height и Width с помощью приведенной ниже формулы и изменит размер нового Bitmap.

Соотношение сторон = Высота / Ширина (если мы взяли новую ширину)

СоотношениеСоотношение = ширина / высота (если мы возьмем новую высоту)

AR = 300/400 = 0,75

New Height = NewWidth * AR;
NewHeight = 200 * 0.75;
NewHeight = 150 ;

Таким образом, вы можете изменить размер растрового изображения, взяв значения высоты и ширины.

Онлайн-калькулятор пропорций изображения

Используйте следующий метод для изменения размера растрового изображения:

public static Bitmap scaleBitmap(Bitmap bitmap, int wantedWidth, int wantedHeight) {
Bitmap output = Bitmap.createBitmap(wantedWidth, wantedHeight, Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Matrix m = new Matrix();
m.setScale((float) wantedWidth / bitmap.getWidth(), (float) wantedHeight / bitmap.getHeight());
canvas.drawBitmap(bitmap, m, new Paint());
return output;
}
0 голосов
/ 07 февраля 2019

Прежде всего, вам нужно получить разрешение вашего устройства, сделайте это так:

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;

Затем, в соответствии с шириной и высотой, вы можете установить ImageView.SetWidth (...) / Height / ScaleType с использованием определенных операторов.

...