Поддержка устройств с различными экранами

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

  • Существует четыре обобщенных размера: маленький (small), нормальный(normal), большой(large), очень большой(x-large).
  • Также существует четыре вида разрешений: низкое (low), среднее (mdpi), высокое (hdpi), очень высокое (xhdpi).

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

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

Создание различной разметки

Чтобы оптимизировать пользовательский интерфейс под различные размеры экрана, необходимо создать собственные файлы разметки для каждого из размеров, которые вы хотите поддерживать. Каждый файл разметки должен быть сохранен в соответствующей директории, название которой заканчивается строкой -<screen_size>. Например, файл разметки для больших экранов должен быть сохранен в директории res/layout-large/.

Примечание: Android автоматически рассчитывает размеры вашего макета для нужного экрана, поэтому вам не нужно заботиться об абсолютных размерах элементов. Вместо этого сосредоточьтесь на структуре разметки, так как она очень влияет на удобство использования вашего приложения. Обратите особое внимание на то, как элементы располагаются относительно друг друга.

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

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

В программном коде обращение к файлу разметки остается прежним:

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

Подробная информация о том, как Android выбирает нужные ресурсы, содержится в разделе Ресурсы руководства по API.

Рассмотрим еще один пример проекта с поддержкой различной ориентации экрана:

По умолчанию файл layout/main.xml используется для потретной ориентации.

Если же вы хотите создать отдельную разметку для альбомной ориентации на больших экранах, используйте одновременно два спецификатора large и land:

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

Использование различных изображений

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

Чтобы создать такие изображения, создайте базовый вариант в векторном формате, а затем экспортируйте его в растровый формат для каждого разрешения, используя следующую шкалу размеров:

  • xhdpi: 2.0

  • hdpi: 1.5
  • mdpi: 1.0 (базовый размер)
  • ldpi: 0.75

Это означает, что если вы создали картинку размером 200×200 пикселей для xhdpi устройств, то для остальных устройств будут такие размеры: 150x150 для hdpi, 100×100 для mdpi и 75x75 для ldpi устройств.

После этого разместите файлы в соответствующих директориях:

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

Примечание: Не всегда существует необходимость создавать ldpi ресурсы. Когда вы создаете hdpi ресурс, система может автоматически пересчитать размеры и использовать его для ldpi экранов.

Советы и руководства по созданию изображений для вашего приложения читайте в разделе Создание изображений руководства по дизайну.

Добавить комментарий