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

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

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

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

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

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

Solutions Collecting From Web of "Как вы делаете макеты для нескольких размеров экрана Android?"

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

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

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

Общее правило заключается в использовании Density Independent Pixels (провалы) для определения размера в вашем макете xmls – я вижу, вы уже это сделали. Для этого у меня есть только макет для всего диапазона устройств. Что нужно разбить, это графика. Для этого я использую 3 разных доступных каталога: «drawable-ldpi», «drawable-mdpi» и «drawable-hdpi». Это делается для того, чтобы изображения имели одинаковый размер (скажем, в миллиметрах) при различных плотностях экрана (при условии, что размер экрана один и тот же – нормальный, например) их следует масштабировать следующим образом:

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

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

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

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