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

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

Войти
Регистрация
Восстановить пароль
 
korshun84
21 / 76 / 17
Регистрация: 08.07.2014
Сообщений: 403
#1

Поясните про поддержку разных экранов - Программирование Android

04.02.2016, 12:32. Просмотров 605. Ответов 11
Метки нет (Все метки)

Я туплю или эмулятор глючит ?
В genymotion сделал 3 устройства, что бы поиграться разными layout для разных экранов:
1. 480х800
2. 768х1280
3. 1080х1920
И в тестовом проекте сделал 4 папки с layout: layout-small, layout, layout-large и layout-xlarge и запустил приложение на всех эмуляторах.
В итоге:
1. 480х800 - вылез обычный layout, все ок
2. 768х1280 - вылез xlayout, тоже все ок
3. 1080х1920 - вылез обычный layout, wtf ??? o_O
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2016, 12:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поясните про поддержку разных экранов (Программирование Android):

Про DPI экранов - Программирование Android
Как быть, я сделал текстовое приложение без графики, а на различных девайсах разный DPI и на одних слишком крупный текст где DPI 240, а где...

Dimens для разных экранов - Программирование Android
Я хочу сделать для разных экранов разный размер шрифта. Как бы мне это сделать? Я создал папку values-sw480dp-hdpi для экрана HTC One V(на...

Разметка для разных экранов - Программирование Android
У меня такой вопрос как сделать разметку для разных размеров экранов наиболее оптимально. Ну если в проекте создавать кучу папок и...

Как установить программного ориентацию для разных экранов? - Программирование Android
Здравствуйте! Для своей программы хочу такую логику: для телефонов ориентация только вертикальная, а для планшетов - только...

Подскажите как сделать разметку для разных экранов - Программирование Android
У меня есть recyclerview в него устанавливается GridLayoutManager в 3 колонки, есть разметка itemа для этого списка. Item внутри себя...

Какого размера делать персонажа для разных экранов Android? - Программирование Android
Какого размера делать персонажа для разных экранов Android? В игре будет два динамических спрайта. Они должны масштабироваться под разные...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
04.02.2016, 12:44 #2
korshun84, как всё запущено. Вы действительно хотите делать разные разметки под разные разрешения? По-моему, там это то ли устарело, то ли обычно решается через атрибуты из dimens.xml.

Добавлено через 56 секунд
И, может быть, виновато не разрешение, а плотность.
Pablito
2471 / 1916 / 595
Регистрация: 12.05.2014
Сообщений: 6,740
Завершенные тесты: 1
04.02.2016, 12:49 #3
там все завязано на плотность точек
экран 1080 на 1920 может быть 4.7"
поэтому на том виртуально устройстве где 1080х1920 надо проверить дюймы и плотность экрана dpi, она не должна быть большой

во всем известной табличке http://developer.android.com/intl/ru...s_support.html
указаны размеры не в точках, а в dp
korshun84
21 / 76 / 17
Регистрация: 08.07.2014
Сообщений: 403
04.02.2016, 12:52  [ТС] #4
Я пока делать ничего не собираюсь, мне понять хочется, почему офф. документация говорит одно, а на деле получается чертичто.
http://developer.android.com/guide/p...s_support.html - ни слова, что это устарело. И, если верить написанному по этой ссылке, то плотность тут тоже ни при чем.
Или все таки действительно дело в ней - ткните тогда носом, где там про это пишут.
Заранее благодарю!

Добавлено через 2 минуты
Ок, если дело все-таки в точках, то вопрос все равно остается тот же:
1. 480х800, 240dpi - вылез обычный layout, все ок
2. 768х1280, 160dpi - вылез xlayout, тоже все ок
3. 1080х1920, (!!!!)480dpi - вылез обычный layout, wtf ??? o_O
Pablito
2471 / 1916 / 595
Регистрация: 12.05.2014
Сообщений: 6,740
Завершенные тесты: 1
04.02.2016, 12:55 #5
Цитата Сообщение от korshun84 Посмотреть сообщение
. 1080х1920, (!!!!)480dpi - вылез обычный layout, wtf ??? o_O
если не поргуливал геометрию то можно посчитать что при плотности 480 точек диагональ экрана 1080х1920 будет 4.5 дюйма
korshun84
21 / 76 / 17
Регистрация: 08.07.2014
Сообщений: 403
04.02.2016, 13:10  [ТС] #6
По ссылке размеры действительно в dp, а не в px, понятно, вопросов нет.
xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp

Цитата Сообщение от Паблито Посмотреть сообщение
можно посчитать что при плотности 480 точек диагональ экрана 1080х1920 будет 4.5 дюйма
Хорошо, почему тогда в варианте 768х1280, 160dpi вылез xlayout ?
Pablito
2471 / 1916 / 595
Регистрация: 12.05.2014
Сообщений: 6,740
Завершенные тесты: 1
04.02.2016, 13:18 #7
профиль устройства или скриншоты где видно его параметры в студию
korshun84
21 / 76 / 17
Регистрация: 08.07.2014
Сообщений: 403
04.02.2016, 13:27  [ТС] #8
Ловите.
Миниатюры
Поясните про поддержку разных экранов  
Pablito
2471 / 1916 / 595
Регистрация: 12.05.2014
Сообщений: 6,740
Завершенные тесты: 1
04.02.2016, 13:36 #9
стоп стоп
считаем диагональ этого устройства
d = sqrt( 768*768 + 1280*1280)
d ~ 1492 точки
при плотности 160 dpi (mdpi) получаем диагональ 9,325 дюйма

это разьве не xlarge ?
korshun84
21 / 76 / 17
Регистрация: 08.07.2014
Сообщений: 403
04.02.2016, 13:54  [ТС] #10
Кажется начинаю понимать, где именно я тупил

Подитожу, что бы тема у меня больше не поднималась:

Мы знаем коэффициенты масштабируемости:
- low (ldpi) = 0,75
- medium (mdpi) = 1
- tv (tvdpi) = 1,33
- high (hdpi) = 1,5
- extra high (xhdpi) = 2
- extra extra high (xxhdpi) = 3

И знаем какой макет к каким dp относится (офф. документация):
xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp

Устройство к примеру 480х800px, 240dpi.
Т.к. плотность тут 240 - это hdpi. 480px \ 1.5 = 320dp
320dp - это normal screens
С 768х1280, 160dpi все проще: т.к. 160dpi - это medium, следовательно коэфф. равен единице и 768px = 768dp, а xlarge screens - это более 720dp

Правильно все понял ?
Pablito
2471 / 1916 / 595
Регистрация: 12.05.2014
Сообщений: 6,740
Завершенные тесты: 1
04.02.2016, 14:04 #11
ну почти так
я бы начинал с начала с вычисления диагонали устройства
диагональ = корню квадратному от суммы квадратов сторон экрана (в пикселях)
получили диагональ в пикселях и теперь уже можно делить на плотность, получаем реальный размер диагонали в дюймах

в той табличке с привязкой размеров к large - xlarge и так далее, речь идет о диагонали устройств
korshun84
21 / 76 / 17
Регистрация: 08.07.2014
Сообщений: 403
04.02.2016, 14:08  [ТС] #12
Ясно, спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2016, 14:08
Привет! Вот еще темы с ответами:

CustomView разные изображения для разных экранов - одна система координат - Как? - Программирование Android
Есть изображение, карта, на ней я должен в координатах размещать объекты. Изображения разные: hdpi, ldpi, mdpi и так далее. Когда я...

Поясните про права для Marshmallow - Программирование Android
Собирал своё приложение для версии Android 4.0.3 c API 15. Проверял на соответствующем планшете. Всё работает, начал изучать возможность...

Перелистывание экранов - Программирование Android
Если кто пользовался официальным приложение для ВК под андройд, то в разделе "новости" если провести пальцем по экрану,то от выползает как...

Создание экранов - Программирование Android
Только начал изучать Android да и Java тоже. Хочу узнать, как сделать несколько экранов. Типа авторизация, при успешной открытие 2-ого...


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

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

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