Каков минимально возможный размер экрана, который будет использовать макет sw-600dp?

#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. Это сказано в документах. Если вы нажмете на первую ссылку, она приведет вас туда, где я нашел информацию в документах.