Усложнения — это функция циферблатов как физических, так и умных часов, которая показывает дополнительную информацию. Обычно пользователь выбирает, какая информация будет отображаться в усложнении.
Обычно осложнения бывают разных форм:
- Прямоугольный
- Круговой
- Дуги по краю циферблата
- Фон, покрывающий весь циферблат часов
В Wear OS систему расширений можно разделить на две части:
- Источник данных о сложности
- Рендеринг усложнения
Например, приложение для здоровья и фитнеса может реализовать источник данных для усложнения Daily Steps. Это может быть отображено на циферблате WFF.
Источники данных в осложнениях
Источники данных усложнения указывают только данные, которые должны быть отображены, и тип усложнения. Источник данных не играет никакой роли в определении того, как данные должны быть представлены на циферблате часов.
Например, источник данных о ежедневных шагах для здоровья и фитнеса может предоставить следующие данные, указывающие на то, что пользователь сделал сегодня 2400 из своих целевых 10000 шагов:
- Тип:
GOAL_PROGRESS
- Стоимость:
2400
- Целевое значение:
10000
Обратите внимание, что в этих данных нет ничего, что указывало бы на то, как это следует отображать.
Циферблат часов определяет, какие типы усложнений он способен отображать. Это определяет, какие источники данных затем доступны пользователю для выбора.
В случае примера Daily Steps вы решаете в определении циферблата, как отображать Value
и TargetValue
: как текст или как индикатор прогресса? Это решать вам как дизайнеру циферблата.
Определить осложнения
Возможность отображения усложнений на циферблате часов может быть ценной для пользователей, поскольку она позволяет им быстро получить более широкий спектр информации и настроить ее в соответствии со своими потребностями.
Решите, будут ли на циферблате ваших часов поддерживаться какие-либо расширения и в каком количестве, каковы будут их форма и расположение, а также какие типы данных они будут поддерживать.
Каждое пространство на циферблате для усложнения определяется как ComplicationSlot
, внутри которого определяется ограничивающая область для отображения усложнения:
<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
x="0" y="0" width="225" height="225">
<BoundingArc centerX="225" centerY="225" width="450" height="450"
startAngle="270" endAngle="360" thickness="50" />
<Complication type="SHORT_TEXT">
<!-- Complication content for rendering SHORT_TEXT data goes here -->
</Complication>
<Complication type="SMALL_IMAGE">
<!-- Complication content for rendering SMALL_IMAGE data goes here -->
</Complication>
</ComplicationSlot>
Аналогичный подход можно применить к другим ограничивающим фигурам, таким как прямоугольник и эллипс.
Установите тип усложнения и значения по умолчанию
Система усложнений предоставляет ряд различных типов, что позволяет циферблату часов выражать, какой тип данных он может представлять на экране. Например, усложнение Arc, как показано ранее, не очень подходит для типа данных усложнения на основе изображения, такого как SMALL_IMAGE
, но может отлично работать для числовых данных, таких как RANGED_VALUE
.
В объявлении ComplicationSlot
задайте supportedTypes
для списка типов, разделенных пробелами, которые могут быть отображены в этом слоте.
Вам также необходимо задать источник по умолчанию для ComplicationSlot
, если только вы не разрешите тип EMPTY
, в этом случае настройка источника по умолчанию необязательна:
<ComplicationSlot slotId="1" ...>
<BoundingArc .../>
<DefaultProviderPolicy
defaultSystemProvider="STEP_COUNT"
defaultSystemProviderType="SHORT_TEXT" />
</ComplicationSlot>
Помимо указания системных поставщиков, вы можете по желанию указать несистемных поставщиков , например сторонних поставщиков, которые будут использоваться по умолчанию, если они уже установлены.
Данные об усложнении визуализации
Определив ComplicationSlot
, границы и содержащий элемент Complication
, используйте стандартные компоненты WFF, такие как PartDraw, PartImage
и PartText
для отображения данных Complication.
Элементы в данных Complication
имеют доступ к специальному источнику данных: COMPLICATION
, который предоставляет различные свойства данных, заданные источником данных Complication.
Например, SMALL_IMAGE
complication может устанавливать значения COMPLICATION.SMALL_IMAGE
и COMPLICATION.SMALL_IMAGE_AMBIENT
. Их можно использовать вместо ресурса в элементе Image
:
<Complication type="SMALL_IMAGE">
<PartImage ...>
<Image resource="[COMPLICATION.SMALL_IMAGE]" />
</PartImage>
</Complication>
Каждый тип усложнения имеет свой набор доступных свойств, которые можно задать; полный список каждого из них см. в справочнике Complication
. В этом примере отображается текст из усложнения SHORT_TEXT
:
<Complication type="SHORT_TEXT">
<PartText ...>
<Text>
<Font ...>
<Template>
<![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
</Template>
</Font>
</PartImage>
</Complication>
Максимизируйте полезность при визуализации осложнений
При добавлении ComplicationSlots
на циферблат часов возникает ряд сложностей:
- Существует множество типов данных Complication. Различные приложения могут предоставлять один или несколько из них.
- Каждый тип данных Complication, а также имеющий обязательные свойства, также имеет много дополнительных свойств. Проверьте, что наиболее полезный рендеринг сделан из доступных свойств, принимая во внимание различные комбинации.
Для решения этих проблем можно использовать следующие стратегии:
- Поддержка нескольких типов усложнений для каждого слота. Например,
SHORT_TEXT
довольно широко поддерживается источниками данных усложнений, поэтому поддержка нескольких различных типов, таких какSHORT_TEXT RANGED_VALUE
для небольшого кругового усложнения, повышает совместимость. - Предлагайте различные типы усложнений на циферблате. Например, вы можете поддерживать
RANGED_VALUE
иGOAL_PROGRESS
на усложнениях Arc, расположенных по краям, иSHORT_TEXT
иSMALL_IMAGE
на круглых усложнениях в теле циферблата. - Проверьте наличие необязательных элементов для каждого типа данных. Например,
SHORT_TEXT
опционально поддерживает свойство заголовка и изображение. Ваш макет для отображения доступных данных может отличаться в зависимости от того, доступны ли изображение или заголовок.