Я собираюсь отображать очень большие изображения в Android.
Мое первое решение - предоставить их в формате pdf - не удалось, потому что не на каждом КПК была предустановлена программа просмотра pdf, и я не хочу требовать от пользователей ее установки.
Итак, у меня есть png (ширина = 3998 пикселей, высота = 2827 пикселей) , который я хочу отобразить. Я загрузил это изображение, чтобы проверить, как оно будет отображаться в галерее. Это было довольно болезненно. Кажется, что галерея визуализирует это изображение только один раз, и если я увеличу масштаб, я не смогу прочитать текст вообще.
Итак, я написал testActivity, в котором ImageView просто вложен в LinearLayout. Я помещаю изображение в чертеж и устанавливаю его как источник изображения ImageView.
К сожалению, приложение немедленно вылетает из-за "
ERROR/AndroidRuntime(8906): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget"
Я не ожидал, что ОДИН образ может оказаться слишком большим для памяти ВМ
. Я немного поигрался, установил ImageViews
] размером 3998 и 2827 пикселей
, поместите изображение на sdCard
и прочтите его вручную с помощью fileInputStream
.
К моему большому удивлению, теперь отображается мое изображение, но если я поверну свой Nexus S по горизонтали , я получаю то же OutOfMemoryError
, что и раньше.
Может кто-нибудь указать мне основное различие между получением растровое изображение через FileInputStream
или установить его как источник ImageView
.
Также я не могу удобно прокручивать с двумя родительскими scrollViews
Я ищу простое решение для отображения ОДНОГО большого изображения
за раз с возможностью прокрутки по горизонтали и вертикали
с возможностью увеличения и уменьшения.
вот образец изображения, которое я хочу отобразить