Определить пользовательские конфигурации

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

Возможны следующие варианты конфигурации пользователя:

  • BooleanConfiguration : обычно используется там, где у пользователя есть возможность отображать или нет элемент или выбирать между двумя стилями.
  • ListConfiguration : предоставляет пользователю ряд опций. Например, если циферблат часов имеет четыре разных фоновых изображения на выбор
  • ColorConfiguration : определяет цветовые темы, из которых пользователь может выбрать предпочтительную тему.

Булевы параметры

Булевы опции, пожалуй, самые простые из пользовательских конфигураций. Их можно определить следующим образом:

<WatchFace ...>
  <UserConfigurations>
   <!-- show_date and show_date_label defined in res/values/strings.xml -->
    <BooleanConfiguration id="show_date"
        displayName="show_date_label"
        screenReaderText="show_date_label"
        defaultValue="TRUE"
    />
  </UserConfigurations>
  ...
</WatchFace>

Булевы параметры можно использовать двумя способами:

  1. Использование структуры BooleanConfiguration в Scene циферблата:

    <Scene>
        <BooleanConfiguration id="show_date">
            <BooleanOption id="TRUE">
            <!-- ...Content to show date -->
            </BooleanOption>
            <BooleanOption id="FALSE">
            <!-- ...Content when date not required -->
            </BooleanOption>
        </BooleanConfiguration>
    </Scene>
    

    Обратите внимание, что параметры конфигурации не могут быть вложены в их использование, поэтому следующее недопустимо :

    <!-- Will not work -->
    <!-- <Scene>
      <BooleanConfiguration id="show_date">
        <BooleanOption id="TRUE">
          <BooleanConfiguration id="show_time">
            <BooleanOption id="TRUE">
              Content intended for when show_date and show_time both set to TRUE
            </BooleanOption>
          </BooleanConfiguration>
        </BooleanOption>
      </BooleanConfiguration>
    </Scene> -->
    
  2. В качестве альтернативы параметр конфигурации можно использовать в выражениях :

    <Condition>
    <Expressions>
        <Expression name="my_expression">
            <!-- Use show_date as part of a more complex evaluation -->
            <![CDATA[[CONFIGURATION.show_date] == "TRUE" && ... ]]>
        </Expression>
        </Expressions>
        <Compare expression="my_expression">
            <!-- Content goes here -->
        </Compare>
    </Condition>
    

Список вариантов

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

<ListConfiguration id="bg_img" displayName="bg_img_lbl" icon="bg_img_ico"
    screenReaderText="bg_img_lbl" defaultValue="0">
  <ListOption id="0" displayName="bg0_lbl" screenReaderText="b0_lbl" icon="bg0_ico" />
  <ListOption id="1" displayName="bg1_lbl" screenReaderText="bg1_lbl" icon="bg1_ico" />
  ...
</ListConfiguration>

Подобно булевым параметрам, есть два способа использования:

  1. Использование элемента ListConfiguration в Scene :

    <ListConfiguration id="bg_img">
      <ListOption id="0">
        <!-- Show background 0 -->
      </ListOption>
      <ListOption id="1">
        <!-- Show background 1 ... etc -->
      </ListOption>
    </ListConfiguration>
    
  2. В качестве альтернативы параметр конфигурации можно использовать в более сложных выражениях:

    <Condition>
      <Expressions>
          <Expression name="background_zero_and_something_else">
            <!-- Use bg_img as part of a more complex evaluation -->
            <![CDATA[[CONFIGURATION.bg_img] == "0" && ... ]]>
          </Expression>
        </Expressions>
        <Compare expression="background_zero_and_something_else">
            <!-- Content goes here -->
        </Compare>
    </Condition>
    

Цветовые темы

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

Например, чтобы определить тему с двумя записями и тремя цветами в теме:

Расслабленный

Городской

Определите ColorConfiguration следующим образом:

<UserConfigurations>
  <ColorConfiguration id="myThemeColor" displayName="theme_label" defaultValue="0">
    <ColorOption id="0" displayName="relaxed_label" colors="#3083dc #f8ffe5 #7dde92" />
    <ColorOption id="1" displayName="urban_label" colors="#f4b393 #fc60a8 #7a28cb" />
  </ColorConfiguration>
</UserConfigurations>

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

<HourHand resource="hour" ... tintColor="[CONFIGURATION.myThemeColor.0]" />
<MinuteHand resource="minute" ... tintColor="[CONFIGURATION.myThemeColor.1]" />
<SecondHand resource="second" ... tintColor="[CONFIGURATION.myThemeColor.2]" />

В конкретном случае, когда для каждого ColorOption определен только один цвет, на него также можно ссылаться как на CONFIGURATION.myThemeColor без индекса.

ВСТАВЬТЕ АЛЬТЕРНАТИВНЫЙ ТЕКСТ ЗДЕСЬВСТАВЬТЕ АЛЬТЕРНАТИВНЫЙ ТЕКСТ ЗДЕСЬ

Затем пользователь может выбрать понравившуюся ему тему в редакторе циферблата.

Вкусы

Примечание : варианты оформления поддерживаются в формате циферблата версии 2 и выше.

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

Flavors позволяет вам определять предустановки для UserConfigurations , которые, по вашему мнению, стоит выделить.

Затем пользователь может выбрать один из предустановленных вариантов в сопутствующем приложении или продолжить выбирать каждое значение конфигурации по отдельности.

Например, рассмотрим циферблат, в котором вы определяете три параметра (внутренние элементы и детали атрибутов опущены для ясности):

<UserConfigurations>
  <ColorConfiguration id="themeColor" ...>
    <ColorOption id="0" displayName="bright_label" ... />
    <ColorOption id="1" displayName="monochrome_label" ... />
  </ColorConfiguration>
  <ListConfiguration id="clockAppearance" ... >
    <ListOption id="0" displayName="big_and_bold_label" ... />
    <ListrOption id="1" displayName="minimal_label" ... />
  </ListConfiguration>
  <BooleanConfiguration id="showHr" ... />
</UserConfigurations>

Вы определили:

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

Кроме того, на циферблате часов есть ComplicationSlot .

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

  1. Спортивный вкус : Он будет состоять из:
    1. Яркая цветовая тема, которая зарядит вас энергией и сделает активным (ID: 0)
    2. Большие и смелые часы, которые можно видеть во время тренировки (ID: 0)
    3. Частота сердечных сокращений отображается на циферблате часов для справки
    4. Слот усложнения, показывающий количество шагов
  2. Изысканный вкус : Он будет состоять из:
    1. Монохромная цветовая гамма, подходящая к любому наряду (ID: 1)
    2. Минималистичные часы, которые хорошо впишутся в любую обстановку (ID: 1)
    3. На циферблате не отображается частота сердечных сокращений
    4. Слот усложнения не включен

Для включения разновидностей требуется включить в watch_face_info.xml :

<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>
    ...
    <MultipleInstancesAllowed value="true" />
    <FlavorsSupported value="true" />
</WatchFaceInfo>

Затем каждый Flavor определяется в UserConfigurations следующим образом:

<Flavors defaultValue="sportyFlavor">
  <Flavor id="sportyFlavor" ... >
    <Configuration id="themeColor" optionId="0"/>
    <Configuration id="clockAppearance" optionId="0"/>
    <Configuration id="showHr" optionId="TRUE"/>
    <ComplicationSlot slotId="0">
      <DefaultProviderPolicy
              defaultSystemProvider="STEP_COUNT"
              defaultSystemProviderType="SHORT_TEXT"/>
    </ComplicationSlot>
  </Flavor>
  <Flavor id="sophisticatedFlavor" ... >
    <Configuration id="themeColor" optionId="1"/>
    <Configuration id="clockAppearance" optionId="1"/>
    <Configuration id="showHr" optionId="FALSE"/>
    <ComplicationSlot slotId="0">
      <!--
        Type here is set to empty to demonstrate how to hide a complication
        slot in Flavors.
      -->
      <DefaultProviderPolicy
              defaultSystemProvider="SUNRISE_SUNSET"
              defaultSystemProviderType="EMPTY"/>
    </ComplicationSlot>
  </Flavor>
</Flavors>