Ресурсы для разных экранов – Devcolibri

Ресурсы для разных экранов

Структура урока:

Ресурсы для разных экранов

Адаптивный layout — это layout, который предназначен для работы с различными размерами и ориентациями экрана, а также с различными устройствами, на различных языках и версиях Android.

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

Экстернализация ресурсов (вынесение данных во внешний файл)

Чтоб экстернализировать ресурсы, нужно хранить их отдельно от кода приложения. Например, вместо того, чтобы жёстко прописывать какую-то строку в коде, вам нужно дать имя строки и добавить её в файл strings.xml, который в Android Studio вы можете найти на панели Project > Android в папке res > values.

Во внешние файлы также необходимо выносить такие ресурсы, как иконки, layouts, drawables (графические объекты). Это позволит:

  • Поддерживать внешние ресурсы отдельно от остальной части кода. Если необходимо изменить ресурс, который используется в коде в нескольких местах, это можно сделать единожды в одном месте.
  • Предоставить альтернативные ресурсы, которые будут поддерживать определённые конфигурации устройств (например, устройства с различными языками или разными размерами экрана).

Группировка ресурсов

Сохраняйте все ресурсы в папке res. Сортируйте их по типу в отдельные папки внутри res. Для этих папок нужно использовать стандартизированные имена.

Например, на скриншоте ниже показана иерархия файлов для небольшого проекта, которую можно увидеть на панели Project > Android. Папки, которые содержат ресурсы этого проекта по умолчанию, используют стандартизированные имена: drawable, layout, menu, mipmap (для иконок) и values.

Группировка ресурсов

В таблице ниже перечислены основные стандартизированные имена папок ресурсов.

Стандартизированные имена папок ресурсов

Имя папки Тип ресурса
color XML-файлы, определяющие «списки состояний» цветов (эти файлы отличаются от файла colors.xml в папке values).
drawable Файлы растровых изображений (WebP, PNG, 9-patch, JPG, GIF) и XML-файлы, скомпилированные в графические объекты.
mipmap Иконки приложения для разных плотностей пикселей экрана.
layout XML-файлы, определяющие пользовательский интерфейс.
menu XML-файлы, определяющие меню приложений (например, меню параметров).
values XML-файлы, содержащие простые значения, такие как строки, целые числа и цвета. Для удобства разместите уникальные типы ресурсов в разных файлах. Можете использовать следующие варианты наименований файлов ресурсов в этой папке:
  • arrays.xml для массивов ресурсов,
  • dimensions.xml для значений различных размеров в интерфейсах,
  • strings.xml, colors.xml, styles.xml |

Альтернативные ресурсы

Большинство приложений предоставляет альтернативные ресурсы для поддержки определённых конфигураций устройств. Например, в вашем приложении должны быть альтернативные drawable-ресурсы для разных разрешений экрана и альтернативные строковые ресурсы для различных языков. Во время запуска приложения Android определит текущую конфигурацию устройства и загрузит соответствующие ресурсы.

Если для какой-либо конфигурации устройства нет доступных ресурсов, Android воспользуется ресурсами приложения по умолчанию.

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

resource_name-config_qualifier

  • resource_name — это имя папки для этого типа ресурса (см. табл. выше) Например, drawable или values.
  • config_qualifier определяет конфигурацию устройства, для которого будут использоваться ресурсы. Все возможные квалификаторы рассматриваются здесь (таблица 2).
  • Чтобы добавить несколько квалификаторов к одному имени папки, разделите их с помощью тире. Если вы используете несколько квалификаторов для папки ресурса, их нужно расположить в порядке их перечисления в таблице.

Примеры с одним квалификатором:

  • Строковые ресурсы, локализованные на японский язык, будут находиться в файле strings.xml внутри папки values-ja в папке res (сокращенно res/values-ja/strings.xml). Строковые ресурсы по умолчанию (ресурсы, которые должны использоваться, когда не найдено специфичных для языка ресурсов) будут находиться в файле res/values/strings.xml. Обратите внимание, что XML-файлы имеют одинаковые имена, в данном случае — strings.xml.
  • Стили компонентов для API уровня 21 и выше будут находиться в файле res/values-v21/styles.xml. Ресурсы стилей по умолчанию находятся в res/values/styles.xml.

Пример с несколькими квалификаторами:

  • Layout-ресурсы, предназначенные для расположения элементов справа налево и использования в «ночном» режиме, будут находиться в папке res/layout-ldrtl-night/. Это правильное имя папки, потому что в таблице квалификатор для направления элементов указан до того, как указан квалификатор для ночного режима. Папка с именами квалификаторов в обратном порядке (res/layout-night-ldrtl) будет неправильной.

Создание альтернативных ресурсов

Чтобы создать папки альтернативных ресурсов в Android Studio, выберите Android на панели Project, согласно указателю на рисунке ниже.

Project. Android

Чтобы использовать Android Studio для создания новой папки альтернативных ресурсов для определённой конфигурации в папке res, придерживайтесь следующей инструкции:

  1. Убедитесь, что вы используете панель Project > Android, как показано выше.
  2. Щелкните правой кнопкой мыши по папке res и выберите New > Android resource directory. Откроется диалоговое окно создания нового ресурса.

Создание ресурса

  1. Выберите необходимые для данного набора альтернативных ресурсов тип и квалификаторы.
  2. Нажмите ОК.

Сохраните альтернативные ресурсы в новой папке. Обратите внимание, что альтернативные файлы ресурсов должны быть названы точно так же, как файлы ресурсов по умолчанию (например, styles.xml или dimens.xml).

Основные квалификаторы альтернативных ресурсов

Ориентация экрана

Квалификатор ориентации экрана имеет два возможных значения:

  • port: Устройство находится в портретном режиме (вертикальном). Так, res/layout-port/ будет содержать layout-файлы, которые будут использоваться, когда устройство находится в портретном режиме.
  • land: Устройство находится в альбомном режиме (горизонтальном). Соответственно, res/layout-land/ будет содержать layout-файлы, которые будут использоваться, когда устройство находится в альбомном режиме.

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

Чтобы создать layout для альбомной ориентации и больших дисплеев, используйте layout-редактор. Для этого следуйте указаниям ниже:

  1. Откройте XML-файл (например, activity_main.xml) в Android Studio. Появится layout-редактор.
  2. Перейдите на вкладку Design в нижней части редактора макетов (если он еще не выбран).
  3. Нажмите на кнопку Orientation in Editor на верхней панели инструментов.
  4. Выберите параметр Create Landscape Variation.
  5. Для альбомной (горизонтальной) вариации откроется новое окно редактора с файлом land/activity_main.xml. Вы можете изменить этот layout для альбомной ориентации, не изменяя исходную портретную (вертикальной) ориентацию.
  6. Перейдите в каталог res > layout из панели Project > Android, и вы увидите, что Android Studio автоматически создала для вас вариант с именем activity_main.xml (land) для альбомной версии activity_main.xml.

Ресурс для альбомной ориентации экрана

Версия платформы

Квалификатор версии платформы определяет минимальный уровень API, поддерживаемый устройством. Например, используйте v11 для API уровня 11 (устройства на Android 3.0 или выше).

Для работы изображений WebP требуется уровень API 14 (Android 4.0) или выше, а для их полной поддержки требуется уровень API 17 (Android 4.2) или выше. Если вы используете изображения WebP:

  • Поместите версии изображений по умолчанию в папку res/drawable. Эти изображения должны быть формата, поддерживаемого всеми уровнями API, например PNG.
  • Поместите версии изображений в формате WebP в папку res/drawable-v17. Если устройство использует API уровня 17 или выше, Android выберет эти ресурсы во время запуска приложения.

Локализация

Квалификатор локализации указывает язык и регион (опционально), который используется в приложении. Данный квалификатор представляет собой двухбуквенный ISO 639-1 код языка, за которым (опять же, опционально) следует двухбуквенный код региона (перед ним будет находиться строчная буква r).

Вы можете указать только язык, но только регион указать нельзя. Примеры:

  • res/values-fr-rFR/strings.xml
    Строки в этом файле используются на устройствах с французским языком во Франции.
  • res/mipmap-fr-rCA/strings.xml
    Строки из этого файла будут используются на устройствах с французском языке, но уже в Канаде.
  • res/layout-ja/content_main.xml
    Этот layout будет использоваться на устройствах с японским языком.

Если пользователь меняет язык или регион в системных настройках устройства во время работы приложения и в приложении есть соответствующие альтернативные ресурсы, то Android автоматически перезагрузит приложение, используя альтернативные ресурсы, которые соответствуют новой конфигурации устройства.

Ресурсы по умолчанию

Ресурсы по умолчанию определяют дизайн и контент по умолчанию для вашего приложения. Например, когда приложение работает на устройстве с языком, для которого вы не указали специфичный для него текст, Android загрузит строки по умолчанию из файла res/values/strings.xml. Если файл по умолчанию отсутствует или в нём отсутствует хотя бы одна критичная для работы приложения строка, то приложение просто не запустится и выдаст ошибку.

Ресурсы по умолчанию имеют стандартные имена папок ресурсов (например, values) без квалификаторов в названии папки или скобок после названий файлов.

Ресурсы по умолчанию

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

УВИДЕТЬ ВСЕ Добавить заметку
Вы
Добавить ваш комментарий
 

Сайт использует cookie-файлы для того, чтобы вам было удобнее им пользоваться. Для продолжения работы с сайтом, вам необходимо принять использование cookie-файлов.

Я ознакомлен(а)