Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
sunny_sunny
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 7
#1

Android OutOfMemory error while scaling big images

21.07.2014, 10:45. Просмотров 473. Ответов 3
Метки нет (Все метки)

Добрый день! Буду благодарна, если поможете решить небольшую проблемку.

Имеется несколько изображений (около пяти), которые я использую как фоновые в своем приложении. Все они имеют габариты 2000х2000 пикселей, чтобы нормально выглядеть даже на экранах планшетов с высокой плотностью пикселей. Я пытаюсь масштабировать изображение к размеру экрана, но каждый раз вылетает OutOfMemory error.

Код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static void setBackgroundImage(int imageId, View layout) {
    layout.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
    int targetW = layout.getMeasuredWidth();
    int targetH = layout.getMeasuredHeight();
    BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bmOptions.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(context.getResources(), imageId, bmOptions);
    int photoW = bmOptions.outWidth;
    int photoH = bmOptions.outHeight;
 
    int scaleFactor = Math.min(photoW / targetW, photoH / targetH);
 
    bmOptions.inJustDecodeBounds = false;
    bmOptions.inSampleSize = scaleFactor;
    bmOptions.inPurgeable = true;
 
    Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), imageId,
            bmOptions);
    BitmapDrawable bg = new BitmapDrawable(context.getResources(), bitmap);
    layout.setBackgroundDrawable(bg);
}
Ошибка появляется, когда я вызываю "BitmapFactory.decodeResource(context.getResources(), imageId, bmOptions);" во второй раз. Можно это как-то исправить? Или я что-то упускаю и есть другой способ масштабирования фонов? Я бы позасовывала их по папкам drawable-*dpi, но не знаю, до каких размеров обрезать, чтобы подходило и для маленьких экранов, и для больших. С иконками попроще в этом плане

Я также пробовала запихнуть все фоны в папку 'drawable-nodpi'. Тогда ошибка не вылетает, но все равно очень низкая производительность приложения, каждую картинку загружает 1-3 секунды.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2014, 10:45
Ответы с готовыми решениями:

Ошибка в Android Studio Error:No resource identifier found for attribute 'appComponentFactory' in package 'android'
Доброго времени суток! При компиляции андроид приложении выходит данная ошибка, прошу помочь! Мне...

Android Studio - failed Error:CreateProcess error=193, %1
Здравствуйте. Знаю, что не в ту категорию, но не знаю, где спросить . Прошу заранее понять и...

Error in Android Studio: Gradle build finished with 41 error(s)
При запуске нового проекта выдает ошибку: Gradle build finished with 41 error(s) Плюс красным...

Android: internal error
Создал пустой проект под андроид. При попытке компиляции в эклипсе появляется вот такое...

Android Studio Error
Здравствуйте, Я новичок и питаются изучать андроид студио. Не давно купил app c codecanyon. ...

3
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
21.07.2014, 10:50 #2
Цитата Сообщение от sunny_sunny Посмотреть сообщение
2000х2000
конечно вылетит эта ошибка.

найдите разрешение девайса, на котором занимаетесь отладкой в интернете - это будет его mdpi. Далее закидываем нужный размер в папку, а система уже сама растянет или сузит это изображение под размер.
0
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
22.07.2014, 17:57 #3
sunny_sunny, низкая производительность потому, что картинки все висят в памяти. Что бы таких проблем небыло вам нужно использовать ссылки (References) благодаря чему сборщик мусора будет знать, что при недостатке памяти эти объекты можно удалить.
0
sunny_sunny
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 7
22.07.2014, 21:14  [ТС] #4
Всем спасибо, вопрос решила нарезанием картинок под разные разрешения, все летает
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2014, 21:14

Android studio emulator error HAXM
Здравствуйте. Помогите разобраться с эмулятором в андроид студио. Перерыл интернет и на русском, и...

Error while installing apk android IDEA
просто нет слов, только решаешь одну проблему всплывают еще шесть. Вообщем, переустановил IDEA,...

В android studio - Ошибка: build.gradle error (23,17)
В android studio - Ошибка: build.gradle error (23,17), только установил, изучаю самостоятельно по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru