2014-11-02 5 views
1

Я создаю приложение, которое загружает изображения в GridView, но в зависимости от количества изображений, которые я размещаю в своем массиве. Я получаю сообщение об ошибке java.lang.outofmemory и при сбое приложения.
У меня есть ImageAdapter, где происходит загрузка изображений, я следил за этим уроком от Androidhive. Мои изображения в целом составляют около 4,53 МБ, а самый большой - 1,1 МБ. Некоторые изображения довольно малы. Иногда, когда я загружаю изображения из своего кода по одному за раз, приложение запускается, но когда я делаю все изображения сразу, он падает.

Это answer казалось разумным, но я не мог следить за тем, как мой проект настроен. У меня просто есть GridView и программный код ImageView в моем коде, но они, похоже, ссылаются на файл xml.
Вот мой метод getView():
где mThumbsId - целочисленный массив, который хранит мои ссылки на изображения из папки @drawable. Мне нужна помощь в изменении размеров изображений с помощью моего проекта, и, возможно, другой ответ может помочь, но я не могу следовать их структуре.
Мой XML-файл с GridView, а также:
OutOfMemoryError при загрузке изображений в GridView

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/grid_view" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:numColumns="auto_fit" 
android:columnWidth="150dp" 
android:horizontalSpacing="5dp" 
android:verticalSpacing="5dp" 
android:gravity="center" 
android:soundEffectsEnabled="true" 
android:stretchMode="columnWidth" > 

</GridView> 


Thanx в пожилом

+0

Размер в мегабайтах не имеет значения, что много. Насколько велика величина изображений с точки зрения разрешения? –

+0

самый большой один 1161 * 1161 и самый маленький из них 350 * 350 Я просто получил их из Интернета. Должен ли я изменить размер? @PhilippJahoda – Manny265

ответ

1

Изображение 1161x1161 пикселей вы упомянули внутренне преобразуется в Bitmap. Этот битмап (если 32 бит) займет примерно 5 МБ (1161 х 1161 х 4 байта) памяти кучи.

Поскольку у вас будет несколько этих изображений в памяти при использовании в GridView, неудивительно, что у вас закончилась нехватка памяти. Итак, да, вы должны изменить размер изображений, прежде чем загружать их в GridView.

Прочитайте этот вопрос/ответ на как изменить размер: High resolution Image - OutOfMemoryError

+1

, используя ваше решение и установив изображение с помощью метода imageView.setImageBitmap (decodeSampledBitmapFromResource()). Thanx @PhilippJahoda – Manny265

Смежные вопросы