С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Android OutOfMemory error while scaling big images - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Считывание введенных данных с EditText http://www.cyberforum.ru/android-dev/thread1231230.html
Ребят в андройде я новичок, только начал изучать, у меня такой вопрос, как считать данные введенные пользователем в поле EditText?
Программирование Android Как можно указать размер ImageView из кода в DP Здравствуте, подскажите пожалуйста. Как можно указать размер ImageView из кода в DP? И еще: если изображение загружается из интернета, то как можно сохранить пропорции? http://www.cyberforum.ru/android-dev/thread1231117.html
Программирование Android Можно ли в студии узнать какие файлы из лежащих в папках проекта не участвуют в компиляции?
Можно ли в студии узнать какие файлы из лежащих в папках проекта не участвуют в компиляции? Пишу свои классы-"упростители" для разных операций и кидаю их в одну папку. Например цветные тосты со...
Прервет ли Тоаст работу других приложений при появлении Программирование Android
Запустили сервис, который, по окончанию, должен вывести Toast сообщение о результате работы. Тем временем, пользователь решил поиграть в игрушку, либо позвонить кому-нибудь. Так вот когда покажется...
Программирование Android Вызов метода из класса в таймере http://www.cyberforum.ru/android-dev/thread1230994.html
Не могу получить титул веб страницы в таймере (ошибка). Пример: public class Main_Web extends WebView { String texst = "test_project"; public Main_Web(Context context) {...
Программирование Android Распознавание рукописного ввода Где можно почитать, как работает распознавание рукописных символов в андроид-приложениях? Есть ли реализация в свободном доступе? Шаблоны символов? Вообще, что-нибудь на эту тему. подробнее

Показать сообщение отдельно
sunny_sunny
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 7

Android OutOfMemory error while scaling big images - Программирование Android

21.07.2014, 10:45. Просмотров 442. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.