Масштабирование ImageView TOP_CROP

У меня есть ImageView , который отображает png с большим соотношением сторон, чем у устройства (вертикально говоря, то есть длиннее) . Я хочу отображать это, сохраняя соотношение сторон, соответствие ширине родительского элемента и закрепление изображения в верхней части экрана.

Проблема, с которой я столкнулся с использованием CENTER_CROP в качестве типа масштаба, заключается в том, что он (понятно) центрирует масштабированное изображение вместо выравнивания верхнего края по верхнему краю для просмотра изображения.

Проблема с FIT_START заключается в том, что изображение соответствует высоте экрана, но не заполняет ширину.

Я решил эту проблему, используя пользовательский ImageView и переопределив onDraw (Canvas) и обрабатывать это вручную с помощью холста; проблема с этим подходом заключается в том, что 1) я беспокоюсь, что может быть более простое решение, 2) я получаю исключение памяти виртуальной машины при вызове super (AttributeSet) в конструкторе при попытке установить src img размером 330 КБ, когда в куче 3 МБ свободно (при размере кучи 6 МБ) и не могу понять, почему.

Любые идеи / предложения / решения приветствуются :)

Спасибо

ps Я подумал, что решением может быть использование типа матричной шкалы и сделать это самому, но это похоже на то же или больше работы, чем мое текущее решение!

84
задан Dori 13 June 2011 в 12:24
поделиться