Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

Разные лейауты для разных телефонов

#android #android_layout


Такая проблема. Создаем приложение для зоопарка устройств. и необходимо чтобы дизайн
совпадал пиксель в пиксель. Впринципе все смогли разрулить с помощью dpi, выставляя
значения в них. на разных екранах делаем скрин, вставляем в фотошоп и все накладывается
пиксель в пиксель. Но есть такие телефоны типо нексуса 6, у которых нет конкретного
размера в  dpi тоесть он между xxhdpi  и  xxxhdpi. И соотвественно когда я указываю
размер кнопки например 50dpi то она выглядит иначе чем я ожидаю. Я не знаю как это
решить. Из этого вопросы


Как это решается?
Как сделать чтобы на определенном телефоне поставлялся определенный лейаут?


НАШЕЛ

res/layout-sw600dp/main_activity.xml   # For 7” tablets (600dp wide and bigger)
res/layout-sw720dp/main_activity.xml   # For 10” tablets (720dp wide and bigger)


смущает 600dp wide and bigger это что этот лейаут будет и для экранов с большей плотностью
тоже? а как сделать только для конкретного экрана?
    


Ответы

Ответ 1



Можно например так: if(android.os.Build.MODEL.contains("Nexus 6")) setContentView(R.layout.my_layout_for_nexus_6); Мне и самому то не нравится такое выделывать, но что делать раз Nexus такой специфичный :)

Ответ 2



Кроме всего ранее озвученного можно попробовать вынести размеры елементов и шрифтов в dimens. Причем раскидать их по папкам с комбинацией денсити и размера: values-sw320dp-xhdpi values-sw600dp-xhdpi values-sw720dp-xhdpi values-sw320dp-xxhdpi values-sw600dp-xxhdpi values-sw720dp-xxhdpi values-sw320dp-xxxhdpi values-sw600dp-xxxhdpi values-sw720dp-xxxhdpi см. также http://developer.android.com/guide/topics/resources/providing-resources.html

Ответ 3



Nexus 6 - 730 x 410 dp Nexus 9 - 1024 x 768 dp Если используются разные layout'ы для портретной и альбомной ориентации (как часто бывает), то можно учесть это: In order to take advantage of the screen real estate on the Nexus 6 and Nexus 9, we emphasize the importance of responsive design. In the past, if you assumed that landscape mode is significantly wider than portrait mode, you may run into problems on a device like the Nexus 9, which has an aspect ratio of 4:3. Instead of declaring layouts using the layout-land or layout-port resource folder qualifiers, we strongly recommend switching to the wdp width resource folder qualifier so that content is laid out based on available screen width. Тогда для Nexus 6 получаем layout-w410dp-h730dp (портретная) и layout-w730dp-h410dp (альбомная)

Комментариев нет:

Отправить комментарий