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

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

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

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

Логические параметры

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

<!-- Under WatchFace element -->
<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>

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

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

    <!-- Within the main Scene of the watch face -->
    <BooleanConfiguration id="show_date">
        <BooleanOption id="TRUE">
            <!-- ...Content when date required -->
        </BooleanOption>
        <BooleanOption id="FALSE">
            <!-- ...Content when date not required -->
        </BooleanOption>
    </BooleanConfiguration>

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

  2. В качестве альтернативы, параметр конфигурации можно использовать в выражениях :

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

Варианты списка

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

<!-- Under WatchFace element -->
<UserConfigurations>
    <ListConfiguration id="background_image" displayName="background_image_label"
        icon="background_option_icon"
        screenReaderText="background_image_label" defaultValue="0">
        <ListOption id="0" displayName="background0_image_label"
            screenReaderText="background0_image_label" icon="background0_icon" />
        <ListOption id="1" displayName="background1_image_label"
            screenReaderText="background1_image_label" icon="background1_icon" />
        ...
    </ListConfiguration>
</UserConfigurations>

Аналогично логическим параметрам, здесь также есть два способа использования:

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

    <!-- Within the main Scene of the watch face -->
    <ListConfiguration id="background_image">
        <ListOption id="0">
            <!-- ...Content for option 0 -->
        </ListOption>
        <ListOption id="1">
            <!-- ...Content for option 1 -->
        </ListOption>
    </ListConfiguration>

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

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

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

Watch Face Format позволяет определять цветовые темы с помощью ColorConfiguration . Пользователи могут выбрать тему по своему вкусу в редакторе циферблатов, и цвета из этой темы будут отображаться во всем определении циферблата.

Например, чтобы определить тему с двумя элементами и тремя цветами, задайте параметр ColorConfiguration следующим образом:

<!-- Under WatchFace element -->
<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>

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

<AnalogClock x="0" y="0" width="450" height="450">
    <HourHand resource="hour" x="220" y="55" width="20" height="190"
        pivotX="0.5" pivotY="0.9210"
        tintColor="[CONFIGURATION.myThemeColor.0]"/>
    <MinuteHand resource="minute" x="222" y="30" width="16" height="220"
        pivotX="0.5" pivotY="0.9"
        tintColor="[CONFIGURATION.myThemeColor.1]"/>
    <SecondHand resource="second" x="226" y="20" width="8" height="245"
        pivotX="0.5" pivotY="0.8571"
        tintColor="[CONFIGURATION.myThemeColor.2]"/>
</AnalogClock>

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

Вкусы

Примечание : Поддержка различных вариантов оформления циферблатов доступна в версиях Watch Face Format 2 и выше.

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

Flavors позволяет определять предустановки для 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 , поэтому элемент FlavorsSupported в файле watch_face_info.xml должен быть установлен со value="true" .

Каждый вариант оформления определяется в разделе UserConfigurations следующим образом:

<!-- Under UserConfigurations -->
<Flavors defaultValue="sporty_flavor">
    <Flavor id="sporty_flavor"
        displayName="flavor_sporty_label" screenReaderText="flavor_sporty_label">
        <Configuration id="theme_color" optionId="0"/>
        <Configuration id="background_image" optionId="0"/>
        <Configuration id="show_hr" optionId="TRUE"/>
        <ComplicationSlot slotId="0">
            <DefaultProviderPolicy
                defaultSystemProvider="STEP_COUNT"
                defaultSystemProviderType="SHORT_TEXT"/>
        </ComplicationSlot>
    </Flavor>
    <Flavor id="sophisticated_flavor"
        displayName="flavor_sophisticated_label" screenReaderText="flavor_sophisticated_label">
        <Configuration id="theme_color" optionId="1"/>
        <Configuration id="background_image" optionId="1"/>
        <Configuration id="show_hr" 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>