Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Klafe
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 101
#1

Drawable and screen resolution - Программирование Android

13.01.2015, 15:23. Просмотров 456. Ответов 5
Метки нет (Все метки)

Много прочитал всего по данному вопросу, но непонятности все таки меня не оставили. Собственно вопрос:

Имею картинку для фона и хочу что бы она отображалась на экранах с разными разрешениями.

Первый вариант как это сделать - это создать копии этой картинки с разными разрешениями и раскидать их по папкам drawable-hdpi-ldpi... В принципе самый оптимальный, как я понял, вариант. Но если у меня 20 таких картинок? Сколько места они скушают, тем более если приложение небольшое.

Ладно, если они критичны к масштабированию (надписи, рисунки...), то придется их все таки копировать.

Но если они не критичны к масштабированию, то можно ли создать по одному экземпляру каждой картинки с каким-нибудь оптимальным разрешением и положить их в папку drawable, а android будет их сам масштабировать?

Я думал, что можно, но то ли лыжи уехали, то ли я на коньках в них влез.

Что я делаю:

Беру картинку, разрешение 1080x1920, размер 500 КБ, копирую ее в папку drawable. Ставлю ее фоном в xml. Создаю AVD Nexus 5 (по параметрам у него экран 1080x1920), запускаю приложение, вылетает ошибка, которая показывает на строку
Java
1
setContentView(R.layout.main)
, а пишет Out of memory.

Собственно, беру эту же картинку, удаляю ее из drawable, а вставляю в drawable-hdpi. Бинго, все работает.

Почему же android в первом варианте выдал ошибку? По идее он же должен был для маленького экрана уменьшить эту картинку, для большого растянуть, для подходящего ничего не делать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2015, 15:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Drawable and screen resolution (Программирование Android):

How to set text size and layout according resolution and dpi - Программирование Android
Hi, Please tell me that How to set text size and layout according resolution and dpi?

Drawable - Программирование Android
Короч, перетащил xml файлы drawable и values в проект. Как перетащить внутренность hdpi - xxhdpi папок? Создаю новую директорию с...

Работа с Drawable - Программирование Android
Закинул в res/drawable картинку png (1000×1000 30кб), ставлю ее на linear layout: linearlayout.setBackground (getResources ().getDrawable...

Папки Drawable - Программирование Android
Здравствуйте. Сразу к проблеме. Добавил в drawabel-hdpi(150x150) и drawabel-xhdpi(400x400). По идеи должно для Nexus 7 браться...

Масштабирование картинок из drawable - Программирование Android
Здравствуйте! Суть в следующем, есть самодельное меню из картинок, при портретной ориентации находится вверху при ландшафтной слева. ...

Загрузить картинку в Drawable - Программирование Android
И так. Смотрите, дефолтные картинки я кидаю в Draweable. И их от туда беру. Как бы мне взять картинку динамически? Ну смотрите,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Diffuse
18 / 10 / 0
Регистрация: 28.11.2014
Сообщений: 151
13.01.2015, 19:27 #2
Правильней сделать так фотку в ресурсы и загрузить из ресурсов а так у тебя выход за пределы памяти Out of memory.

Java
1
2
3
4
5
6
  
  private Paint Brush = new Paint();
  private Bitmap xxx;
  xxx = BitmapFactory.decodeResource(res, R.drawable.idres);
  canvas.drawBitmap(xxx, 100, 100, Brush);
  canvas.drawPaint(Brush);
0
Klafe
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 101
13.01.2015, 23:05  [ТС] #3
Я почему-то подумал, что это как минимум странно. Зачем тогда нужен параметр backgraund в xml? Или зачем тогда вообще xml? Можно все вручную кодить.

И почему-то про этот out of memory и размеры связанные с ним в официально документации ничего не сказано. Там просто написано, что или создавайте по изображению для каждого экрана или android сам его подгонит, но нет гарантии, что оно будет корректно отображаться.
0
Diffuse
18 / 10 / 0
Регистрация: 28.11.2014
Сообщений: 151
13.01.2015, 23:20 #4
про out of memory скажут в разделе исключительных ситуаций аля критических ошибках их конечно надо обрабатывать. вручную и надо программировать хмл не исключает а объединяет твой код и твои настройки.
0
Klafe
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 101
14.01.2015, 07:59  [ТС] #5
А как все таки правильно делать? Не обращать внимание на размер и делать копии изображений для разных экранов? Или по возможности стоит использовать автоматическую подгонку?
0
Diffuse
18 / 10 / 0
Регистрация: 28.11.2014
Сообщений: 151
14.01.2015, 12:08 #6
я лично параноик ))) не доверяю всему что автоматически делается когда сделал вручную то знаешь что должно работать так но не обязанно ))) для начала надо сделать любым способом который даст положительный результат а потом уж искать другой способ если уж необходимо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2015, 12:08
Привет! Вот еще темы с ответами:

Ссылка на изображение drawable - Программирование Android
И так. У меня в папке drawable есть файл img.png мне нужно программно создать картинку и присвоить ей бекграунд по ссылке, важно то что...

Drawable поверх imageView - Программирование Android
Возможно не правильно назвал топик, но все же. Есть imageView с картинкой (Bitmap). Нужно наложить поверх этой картинки drawable...

Icon в Drawable возможно? - Программирование Android
Возможно ли перевести Icon в Drawable? Есть пакет FontAwesome.Icon, могу ли я использовать его например для android:drawableRight=""? ...

Отличия drawable от Bitmap - Программирование Android
Чем отличается drawable от Bitmap?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.01.2015, 12:08
Ответ Создать тему
Опции темы

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