Дополнительные элементы (или виджеты) — это функция как физических, так и смарт-часов, отображающая дополнительную информацию. Как правило, пользователь выбирает, какая информация будет отображаться в виджете.
Как правило, осложнения принимают различные формы:
- Прямоугольный
- Круговой
- Дуги вдоль края циферблата часов
- Фон, покрывающий весь циферблат часов.
В Wear OS система виджетов может быть разделена на две части:
- Источник данных о осложнениях
- Визуализация осложнения
Например, приложение для здоровья и фитнеса может использовать источник данных для отображения количества шагов в день. Эти данные могут отображаться на циферблате часов WFF.
Источники данных при осложнениях
Источники данных для видоискателей определяют только отображаемые данные и тип видоискателя. Источник данных не влияет на то, как данные должны отображаться на циферблате часов.
Например, источник данных «Ежедневные шаги» в разделе «Здоровье и фитнес» может выдавать следующие данные, указывающие на то, что пользователь сегодня сделал 2400 из запланированных 10000 шагов:
- Тип:
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>
Аналогичный подход можно применить и к другим ограничивающим фигурам, таким как прямоугольник и эллипс.
Установите тип окошка и значения по умолчанию.
Система виджетов предоставляет несколько различных типов, что позволяет циферблату часов отображать на экране различные типы данных. Например, виджет «Дуга», как показано ранее, не очень подходит для типа данных, основанного на изображениях, такого как 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 имеют доступ к специальному источнику данных: 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 на циферблат часов возникает ряд проблем:
- Существует множество типов данных для описания проблем. Разные приложения могут предоставлять один или несколько из них.
- Каждый тип данных Complication, помимо обязательных свойств, имеет множество необязательных. Убедитесь, что наиболее информативное отображение создается на основе доступных свойств с учетом различных их комбинаций.
Для решения этих проблем можно использовать следующие стратегии:
- Поддержка нескольких типов уточнений для каждого слота. Например,
SHORT_TEXTдовольно широко поддерживается источниками данных уточнений, поэтому поддержка нескольких различных типов, таких какSHORT_TEXT RANGED_VALUEдля небольшого кругового уточнения, повышает совместимость. - Предлагайте различные типы виджетов на циферблате. Например, вы можете поддерживать
RANGED_VALUEиGOAL_PROGRESSдля виджетов в виде дуг, расположенных по краям, иSHORT_TEXTиSMALL_IMAGEдля виджетов в виде круглых элементов в основной части циферблата. - Проверьте наличие необязательных элементов для каждого типа данных. Например,
SHORT_TEXTможет дополнительно поддерживать свойство title и изображение. Макет отображения доступных данных может отличаться в зависимости от того, доступно изображение или заголовок.