Android OutOfMemoryError при использовании нескольких изображений - PullRequest
0 голосов
/ 28 марта 2012

В моем приложении у меня есть 3 экрана, содержащие несколько изображений с высоким разрешением.Количество изображений, используемых на экране, составляет около 70-75.Я написал код для добавления изображений в сетку с использованием класса адаптера, расширяющего BaseAdapter, в методе getView (), который я написал, код

adapter = new ImageAdapter(this);
gridview.setAdapter(adapter);

int x = (int)(width/5.1f);
imageView.setId(position);
imageView.setLayoutParams(new GridView.LayoutParams(x,x));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(4, 20, 4, 20);

, но при загрузке этого экрана он показывает много памятипроблемы, и в LogCat я получаю сообщение об ошибке,

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

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

1 Ответ

0 голосов
/ 18 апреля 2012

Если нет возможности настроить разрешение изображений, вы должны открыть их как BitmapFactory.Options().inJustDecodeBounds = true, передать свои параметры изображениям (требуемый отрегулированный размер) и затем снова декодировать их, используя BitmapFactory.Options().inJustDecodeBounds = false.

Фактический размер байта растрового изображения рассчитывается путем умножения количества пикселей на количество байтов, выделенных для пикселя. ARGB_8888 (что рекомендуется) выделяет 4 байта на пиксель, поэтому размер будет ширина * высота * 4 байта .

Подробнее см. Урок Эффективная загрузка больших растровых изображений из Android. Также этот пост должен помочь.

...