Показать огромное мозаичное изображение на телефон Android - PullRequest
2 голосов
/ 19 декабря 2010

У меня есть очень большое изображение (карта), которое мне нужно отобразить. У меня уже есть изображение в «плиточном» формате - 256х256 штук. Также я получил плитки для нескольких уровней «зума».

На данный момент проблема заключается в отображении самого глубокого уровня масштабирования, где у вас будет действительно много плиток. Например, карта среднего размера будет содержать 4 строки и 26 столбцов плиток для глубокого уровня.

Я попытался подойти к проблеме, используя двухмерный вид прокрутки и изображения внутри него - по 1 на плитку. Проблема в том, что он вылетает. Когда я пытаюсь отобразить 4 строки и 20 столбцов, это не приводит к сбою, очевидно, это проблема с памятью.

Так что вопрос здесь - как все это отобразить, учитывая ограниченную оперативную память телефона. Я понимаю, что должен быть способ освободить память для изображений, которые находятся вне поля зрения, и отображать только те, которые в данный момент находятся в видимой области вида прокрутки, но я не знаю, как это сделать.

Был бы рад услышать какие-нибудь подсказки или, может быть, есть альтернативный подход к этим вещам.

Спасибо.

1 Ответ

0 голосов
/ 19 декабря 2010

Я думаю, что вы могли бы лучше использовать представление сетки вместо массивов представления прокрутки (но я не уверен, поддерживает ли оно боковую / обновленную прокрутку одновременно.

А затем в вашем адаптере переопределитеgetView метод. Там вы можете контролировать переработку ваших изображений.

В проекте, которым я занимаюсь, также есть проблемы с образом и оперативной памятью, что я в основном и делаю:

image.recycle();
System.gc();

Я попытался сделать вышеупомянутые вещи, например, 50 кадров в секунду с изображением, как 800x400x32bit, и все еще не сталкивался с проблемой нехватки памяти. Но если я уберу System.gc (), он немедленно вылетает.

...