#android #layout #screen-size #pixel-density
#Android #макет #размер экрана #плотность пикселей
Вопрос:
Я создал layout-sw600dp/layout.xml и это отлично смотрелось на устройстве A. Но на устройстве B этот макет расплавился и выглядит плохо. Я хочу знать, как выглядит мой макет в наихудшем возможном сценарии (ровно 600dp ширина экрана)
Я хочу создать эмулятор с таким размером экрана, поэтому я на 100% уверен, что мой макет будет хорошо выглядеть на телефонах sw-600dp . Вы знаете, какой это размер?
Кроме того, я был бы очень признателен и был бы рад, если бы вы могли дать мне совет, как поддерживать несколько размеров экрана в современном мире.
PS У меня довольно сложные макеты с более чем 40 кнопками
Ответ №1:
Краткий ответ на ваш вопрос о типе эмулятора, который вы бы использовали для sw-600dp : 7-дюймовый планшет. Вы можете найти более подробную информацию здесь. sw
In sw-600dp
smallest width
— это определитель. Это означает, что он предназначен только для устройств с разрешением 600dp, которые обычно представляют собой 7-дюймовые планшеты.
Более длинный ответ на ваш вопрос о том, как убедиться, что ваше приложение хорошо выглядит «в современном мире»::
Вместо того, чтобы пытаться выяснить, каков «наихудший сценарий», вам следует разработать макеты для каждой из различных плотностей экрана и типов устройств, поддерживаемых Android:
- Ресурсы ldpi для экранов с низкой плотностью (ldpi) (~ 120 точек на дюйм).
- Ресурсы mdpi для экранов средней плотности (mdpi) (~ 160 точек на дюйм). (Это базовая плотность.)
- Ресурсы hdpi для экранов с высокой плотностью (hdpi) (~ 240 точек на дюйм).
- Ресурсы xhdpi для экранов с очень высокой плотностью (xhdpi) (~ 320 точек на дюйм).
- Ресурсы xxhdpi для экранов с очень высокой плотностью (xxhdpi) (~ 480 точек на дюйм).
- Ресурсы xxxhdpi для сверхвысокой плотности (xxxhdpi) (~ 640 точек на дюйм).
Согласно документам Android:
Чтобы создать альтернативные растровые изображения для разных плотностей, вы должны следовать 3:4:6:8:12:16 коэффициент масштабирования между шестью первичными плотностями. Например, если у вас есть растровое изображение размером 48×48 пикселей для экранов средней плотности, все разные размеры должны быть:
36×36 (0,75x) для низкой плотности (ldpi) 48×48 (1,0x базовый уровень) для средней плотности (mdpi) 72×72 (1,5x) для высокой плотности (hdpi) 96×96 (2,0x) для сверхвысокой плотности (xhdpi) 144×144 (3,0x) для сверхвысокой плотности (xhdpi)-высокая плотность (xxhdpi) 192 x 192 (4.0x) для сверхвысокой плотности (xxxhdpi) Затем поместите сгенерированные файлы изображений в соответствующий подкаталог в разделе res /, и система автоматически выберет правильный в зависимости от плотности пикселей устройства, на котором запущено ваше приложение:
res/ drawable-xxxhdpi/ awesome-image.png drawable-xxhdpi/ awesome-image.png drawable-xhdpi/ awesome-image.png drawable-hdpi/ awesome-image.png drawable-mdpi/ awesome-image.png
Вы бы сделали то же самое для макетов, создав определенный макет для каждого из различных измерений (обязательно поместите макеты в правильные каталоги: layout-xhdpi, layout-mdpi и т. Д.). Это позволит устройству выбрать правильное изображение / макет в зависимости от устройствапользователь использует.
Если у вас более 40 макетов кнопок, вы должны создать кнопки для каждого макета, используя описанный выше метод, а затем создать макеты для каждого устройства. Это утомительная работа, но это правильный способ создания макетов на устройствах Android.
TLDR; прочитайте документы Android о поддержке нескольких размеров экрана.
Комментарии:
1. Да, я уже видел эти документы и прочитал все, но все еще есть много темных углов, в которых я не уверен>> «600dp, что обычно составляет 7 «планшетов». — откуда вы это знаете? Существует около 20 тыс. устройств Android.
2. Это сказано в документах. Если вы нажмете на первую ссылку, она приведет вас туда, где я нашел информацию в документах.