Дополнения – это функции, которые можно добавить на циферблат обычных или умных часов, чтобы видеть дополнительную информацию. Обычно пользователь сам выбирает, какая информация будет показываться в дополнении.
Обычно они имеют следующие формы:
- Прямоугольный
- Круговые
- Дуги по краю циферблата.
- Фон, занимающий весь циферблат.
В Wear OS система дополнений состоит из двух частей:
- Источник данных для дополнения
- Отображение дополнений
Например, фитнес-приложение может реализовать источник данных для дополнения "Ежедневные шаги". Это может быть циферблат WFF.
Источники данных в дополнениях
Источники данных для дополнений указывают только данные, которые нужно отобразить, и тип дополнения. Источник данных не влияет на то, как данные должны отображаться на циферблате.
Например, источник данных для дополнения "Количество шагов за день" в категории "Здоровье и фитнес" может предоставить следующие данные, чтобы показать, что пользователь прошел 2400 из 10 000 шагов:
- Тип:
GOAL_PROGRESS - Значение:
2400 - Целевое значение:
10000
Обратите внимание, что в этих данных нет ничего, что указывало бы на то, как их следует отображать.
Циферблат определяет, какие типы дополнений он может отображать. От этого будет зависеть то, какие источники данных будут доступны пользователю.
В примере с шагами за день вы сами определяете в определении циферблата, как будут отображаться Value и TargetValue: в виде текста или индикатора прогресса. Это решать вам как дизайнеру циферблата.
Как задать дополнения
Дополнения на циферблате позволяют пользователям быстро получать нужную информацию.
Решите, сколько виджетов вы хотите добавить на циферблат, какой формы и где они будут расположены и какие типы данных будут поддерживать.
Каждое место на циферблате для дополнения определяется как элемент ComplicationSlot, в котором задана ограничивающая область для отрисовки дополнения:
<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="100" y="100" width="100" height="100"> <BoundingOval x="0" y="0" width="100" height="100" /> <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="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY" x="250" y="100" width="100" height="100"> <DefaultProviderPolicy defaultSystemProvider="STEP_COUNT" defaultSystemProviderType="SHORT_TEXT" /> <!-- ... --> </ComplicationSlot>
Помимо системных поставщиков, вы можете указать сторонних поставщиков, которые будут использоваться по умолчанию, если они уже установлены.
Отображение данных дополнений
Определив ComplicationSlot, границы и содержащий элемент Complication, используйте стандартные компоненты WFF, например PartDraw, PartImage и PartText, чтобы отобразить данные дополнения.
Элементы в данных Complication имеют доступ к специальному источнику данных: COMPLICATION, который предоставляет различные свойства данных, заданные источником данных для дополнения.
Например, дополнение SMALL_IMAGE может задавать значения COMPLICATION.SMALL_IMAGE и COMPLICATION.SMALL_IMAGE_AMBIENT. Вместо ресурса в элементе Image можно использовать следующие значения:
<Complication type="SMALL_IMAGE"> <PartImage x="0" y="0" width="100" height="100"> <Image resource="[COMPLICATION.SMALL_IMAGE]" /> </PartImage> </Complication>
Для каждого типа дополнения доступен свой набор свойств, которые можно задать. Полный список приведен в справочнике по Complication.
В этом примере показан текст из дополнения SHORT_TEXT:
<Complication type="SHORT_TEXT"> <PartText x="0" y="0" width="100" height="100"> <Text> <Font size="32"> <Template> <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" /> </Template> </Font> </Text> </PartText> </Complication>
Максимальная полезность при отрисовке виджетов
При добавлении ComplicationSlots на циферблат часов могут возникнуть следующие проблемы:
- Существует множество типов данных для дополнений. В разных приложениях может быть доступна одна или несколько таких функций.
- У каждого типа данных для дополнений, помимо обязательных, есть множество необязательных свойств. Проверьте, чтобы наиболее подходящий вариант был создан на основе доступных свойств с учетом разных комбинаций.
Чтобы решить эти проблемы, можно использовать следующие стратегии:
- Поддержка нескольких типов дополнений для каждого слота. Например,
SHORT_TEXTшироко поддерживается источниками данных для дополнений, поэтому поддержка нескольких типов, таких какSHORT_TEXT RANGED_VALUEдля небольшого круглого дополнения, повышает совместимость. - Предлагать разные типы дополнений на циферблате. Например, вы можете добавить
RANGED_VALUEиGOAL_PROGRESSв дополнения Arc, расположенные по краям, аSHORT_TEXTиSMALL_IMAGE– в круглые дополнения в центре циферблата. - Проверьте, есть ли у каждого типа данных необязательные элементы. Например, свойство
SHORT_TEXTможет содержать название и изображение. Макет для отображения доступных данных может различаться в зависимости от того, есть ли изображение или название.