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>
Логические параметры можно использовать двумя способами:
Использование структуры
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>
Обратите внимание, что параметры конфигурации не могут быть вложенными друг в друга при их использовании.
В качестве альтернативы, параметр конфигурации можно использовать в выражениях :
<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>
Аналогично логическим параметрам, здесь также есть два способа использования:
Использование элемента
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>
В качестве альтернативы, этот параметр конфигурации можно использовать в более сложных выражениях:
<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 , которые, по вашему мнению, заслуживают особого внимания.
Затем пользователь может выбрать один из этих предустановленных вариантов в сопутствующем приложении или продолжить выбирать каждое значение конфигурации по отдельности.
Например, рассмотрим циферблат, в котором вы задаете три параметра:
- Настройка цветовой темы, позволяющая пользователю выбрать, какую цветовую тему применить. Вы определили две темы: одну цветную и одну монохромную.
- Список фоновых изображений. Вы определили два варианта, из которых пользователь может выбрать.
- Возможность выбора, отображать ли частоту сердечных сокращений пользователя на циферблате часов.
Кроме того, на циферблате часов есть слот ComplicationSlot .
Вы решили, что хотите выделить для пользователя два Flavors . Существует множество других возможных комбинаций всех этих настроек, но вот те, которые, по вашему мнению, работают лучше всего:
- Спортивный вкус : Он будет состоять из:
- Яркая цветовая гамма, чтобы зарядить вас энергией и побудить к активности (ID: 0)
- Первое фоновое изображение (ID: 0)
- На циферблате часов отображается частота сердечных сокращений для справки.
- Слот для отображения количества шагов
- Изысканный вкус : Он будет состоять из:
- Монохромная цветовая гамма, подходящая к любому наряду (ID: 1)
- Второе фоновое изображение (ID: 1)
- На циферблате часов не отображается частота сердечных сокращений.
- Слот для отображения информации не активирован.
Для включения поддержки различных вариантов оформления необходимо указать значение в файле 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>