Как сделать макеты для различных размеров экрана Android?

Я провел некоторые исследования по макетам зданий, которые работают для нескольких размеров экрана, и я ищу некоторые разъяснения.

Это обычная практика, чтобы просто сделать отдельный файл макета для каждого из трех размеров (маленький, средний, большой) или вы можете сделать это с более простой способ?

Я тестировал свои проекты на устройстве с большим экраном, и хотя я использую провалы (независимые от плотности пиксели) для заполнения, полей и т. д., Он все еще сжимает материал вверх, когда я смотрю его на меньших экранах. Должен ли я разрабатывать свои проекты для экранов среднего размера, а затем просто позволить Android масштабировать его соответствующим образом?

Я не уверен, что это хороший вопрос или нет, но я ищу, что обычная практика для проектирования для нескольких размеров экрана. Чем вы занимаетесь?

Edit: в дополнение к этому, например, предположим, что у меня есть кнопка 40dip над нижней частью экрана, я должен буквально написать 40dip, или я должен используйте какую-то пиксельную математику, такую как 40 * screenWidth / blahblah или что-то еще, чтобы она масштабировалась в зависимости от размера экрана пользователя? У меня ограниченный опыт работы с UIs...

3 ответов


есть две оси, чтобы рассмотреть, когда дело доходит до размера экрана: физический размер и плотность. Плотность отрегулирована путем обеспечивать измерения в провалах и масштабированных ресурсах по мере необходимости. Но плотность не всегда подразумевает размер или наоборот. Вижу http://developer.android.com/guide/practices/screens_support.html для дальнейшего информация на механике.

Это не часто или рекомендуется иметь различные макеты на основе каждого экрана разрешение вы поддержка, но совершенно разумно конструировать различные планы для различных классов размера (малого, среднего, большого). Различные экраны размера могут извлечь выгоду из добавления, удаления или перемещения определенных элементов навигации в зависимости от приложения.

в пределах определенного класса размера вы должны убедиться, что ваши макеты допускают отклонения в точном разрешении экрана. Как предложил Фалмарри, используйте относительные макеты, веса и другие доступные инструменты, чтобы растянуть макет изящно.


общее правило-использовать независимые от плотности пиксели (провалы) для определения размера в вашем макете xmls - я вижу, что вы уже это делаете. При этом у меня есть только макет для всех устройств. Что нужно разбить, так это графику. Для этого я использую 3 разных выигрышного каталоги - 'холст-ldpi', 'холст-mdpi" и "холст-hdpi'. Это делается для того, чтобы изображения имели одинаковый размер (скажем, в миллиметрах) на разных плотностях экрана (при условии, что размер экрана одинаковый-нормальный, для instance) они должны быть масштабированы следующим образом:

  • drawable-hdpi: 150%
  • drawable-mdpi: 100%
  • drawable-ldpi: 75%

вероятно, это плохой совет. Однако, если вы посмотрите на Google диаграмма размеров экрана и плотности вы можете решить не инвестировать свои дополнительные усилия в тщательное тестирование больших экранов, так как на рынке почти нет таких устройств.


не делать отдельные макеты не очень распространенная практика. Только когда у вас есть изображения, которые не могут быть растянуты, это действительно рекомендуется.

материал всегда будет выглядеть немного растянутым / сжатым при просмотре на устройствах с меньшими / большими экранами. Это своего рода определение экрана другого размера. Вы должны просто использовать относительные макеты и позволить android контролировать конкретные номера пикселей.