У меня есть ImageView
, который отображает PNG, который имеет большее соотношение сторон, чем у устройства (в вертикальном выражении - это означает, что он длиннее). Я хочу отобразить это, сохраняя соотношение сторон, сопоставляя ширину родительского элемента и закрепляя изображение в верхней части экрана.
Проблема с использованием CENTER_CROP
в качестве типа масштаба заключается в том, что он (понятно) будет центрировать масштабированное изображение вместо выравнивания верхнего края с верхним краем для просмотра изображения.
Проблема с FIT_START
заключается в том, что изображение будет соответствовать высоте экрана, а не заполнять ширину.
Я решил эту проблему, используя собственный ImageView и переопределив onDraw(Canvas)
и обработав его вручную, используя canvas; проблема с этим подходом заключается в том, что 1) я беспокоюсь, что может быть более простое решение, 2) я получаю исключение виртуальной памяти при вызове super(AttributeSet)
в конструкторе при попытке установить src img в 330 КБ, когда куча имеет 3 МБ бесплатно (с размером кучи 6 МБ) и не могу понять, почему.
Любые идеи / предложения / решения приветствуются:)
Спасибо
p.s. я подумал, что решение может состоять в том, чтобы использовать матричный масштаб и сделать это самому, но это похоже на ту же или большую работу, чем мое текущее решение!