Я намерен отображать очень большие изображения в Android.
Мое первое решение - предоставить их в формате pdf - не удается, потому что не каждый карманный компьютер имеет предустановленный pdf-просмотрщик, и я не хочу, чтобы пользователи его устанавливали.
Итак, у меня теперь есть png теперь (width = 3998px height = 2827px), который я хочу отобразить. Я загрузил это изображение, чтобы проверить, как он будет отображаться в галерее. Это было довольно болезненно. Кажется, что галерея делает эту картину только один раз, и если я увеличиваю масштаб, я не могу читать текст вообще.
Поэтому я написал testActivity, который просто имеет ImageView, вложенный в LinearLayout. Я поместил изображение в drawable и установил его как образный образ ImageView.
К счастью, приложение немедленно вылетает из-за "
ERROR/AndroidRuntime(8906): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget"
Я не ожидал, что одно одиночное изображение может быть слишком большим для VM memory
. Я немного поиграл, установил размер ImageViews
на 3998 & 2827px
, поместил изображение в sdCard
и прочитал его вручную с помощью fileInputStream
.
К моему большому удивлению, теперь он показывает мой образ, но если я верну свой горизонтальный Nexus S горизонтальный, я получаю тот же OutOfMemoryError
, что и раньше.
Может ли кто-нибудь указать мне основное различие между получением растрового изображения с помощью fileInputStream
или для установки его как источника ImageView's
.
Также я не могу свободно прокручивать с двумя родителями scrollViews
Я ищу простое решение для отображения ONE large image
за один раз с возможностью scroll horizontal and vertical
, в то время как можно увеличивать и уменьшать масштаб.
вот образец изображения, который я хочу отобразить