Квалификаторы ресурсов на Surface Duo

Если приложение развернуто на устройстве с двумя экранами, вы можете увидеть, что макет, который вы используете в настоящий момент, не адаптирован полностью для такой конфигурации. Например, вы можете заметить, что некоторое содержимое закрывается петлей, и захотите скорректировать макет, чтобы ваше приложение оптимально отображалось на устройстве с двумя экранами. Для управления такими корректировками Android предоставляет квалификаторы, позволяющие управлять несколькими конфигурациями. Так вы сможете использовать разные значения для оптимизации приложения под конкретные конфигурации устройств независимо от того, выполняется ли оно на устройстве с небольшим экраном, на планшете с 10-дюймовым экраном в альбомной ориентации или на Surface Duo.

Обнаружение Surface Duo

Для устройств Surface Duo можно использовать квалификатор sw720dp-2754×1800, например:

  • values-sw720dp-2754×1800 — для значений ресурсов, например файлов strings.xml.
  • layout-sw720dp-2754×1800 — для файлов XML с макетами.

Surface Duo будет использовать размещенные в них ресурсы. Если конкретные ресурсы недоступны, Surface Duo применяет существующие квалификаторы в порядке приоритета.

Принцип построения квалификатора

Размеры Surface Duo указывают на то, что устройство с двойным экраном в альбомной ориентации имеет наименьшую ширину в 720 dp. Это значение не изменяется при изменении ориентации экрана. То есть это значение сохраняется в режиме двойного экрана в альбомной или в книжной ориентации. Оно представлено как sw720dp в квалификаторе.

Значение 2754×1800 предоставляет более конкретную конфигурацию. Так как sw720dp может использоваться со множеством доступных планшетов на рынке, значение 2754×1800 является наименьшим значением ширины и высоты (в пикселях) в диапазоне Surface Duo. Общая ширина Surface Duo 2 составляет 2754 px. А высота Surface Duo — 1800 px. Объединение этих двух значений дает минимальные размеры 2754x1800 px, которые будут применяться для сопоставления при использовании в качестве квалификатора ресурса.

Примечание

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

Наименьшее значение ширины экрана в коде

Наименьшее значение ширины экрана также можно проверить в коде, используя resources.configuration.smallestScreenWidthDp из контекста пользовательского интерфейса, например класса действия. Избегайте использовать значения из контекста, не относящегося к пользовательскому интерфейсу (например, приложения), и избегайте кеширования значения, так как оно может измениться на устройстве с двумя экранами или в другой ситуации, когда включен многооконный режим, и приложение запускается или перемещается в часть экрана, а не занимает весь экран.

Ресурсы