UserConfigurations
umożliwiają tworzenie opcji, spośród których użytkownik może wybierać. Możesz dostosować wygląd elementów tarczy zegarka na podstawie wybranych wartości.
Opcje konfiguracji użytkownika mogą być następujące:
BooleanConfiguration
: zwykle używana w przypadku, gdy użytkownik może wybrać, czy dany element ma być widoczny, czy nie, lub wybrać jeden z dwóch stylówListConfiguration
: udostępnia użytkownikowi szereg opcji. Jeśli na przykład tarcza zegarka miała 4 różne obrazy tła do wyboruColorConfiguration
: definiuje motywy kolorystyczne, spośród których użytkownik może wybrać preferowany.
Opcje logiczne
Wartości logiczne są prawdopodobnie najprostszą konfiguracją użytkownika. Można je zdefiniować w ten sposób:
<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>
Opcji logicznych można używać na 2 sposoby:
Używanie struktury
BooleanConfiguration
w tarczy zegarkaScene
:<Scene> <BooleanConfiguration id="show_date"> <BooleanOption id="TRUE"> <!-- ...Content to show date --> </BooleanOption> <BooleanOption id="FALSE"> <!-- ...Content when date not required --> </BooleanOption> </BooleanConfiguration> </Scene>
Pamiętaj, że opcji konfiguracji nie można zagnieżdżać, dlatego ten kod nie jest prawidłowy:
<!-- 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> -->
Opcję konfiguracji można też użyć w wyrażeniach:
<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>
Opcje listy
Opcje listy działają bardzo podobnie do opcji logicznych. Aby na przykład udostępnić użytkownikowi listę obrazów tła do wyboru:
<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>
Podobnie jak w przypadku opcji logicznych, możesz użyć tego parametru na 2 sposoby:
Używanie elementu
ListConfiguration
w elemencieScene
:<ListConfiguration id="bg_img"> <ListOption id="0"> <!-- Show background 0 --> </ListOption> <ListOption id="1"> <!-- Show background 1 ... etc --> </ListOption> </ListConfiguration>
Opcję konfiguracji można też użyć w bardziej złożonych wyrażeniach:
<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>
Kompozycje kolorów
Format tarczy zegarka umożliwia definiowanie motywów kolorystycznych za pomocą ColorConfiguration
.
Użytkownicy mogą wybrać dowolny motyw w edytorze tarczy zegarka, a kolory z tego motywu mogą się pojawiać w definicji tarczy zegarka.
Aby na przykład zdefiniować motyw z 2 elementami i 3 kolorami:
Rozluźnione |
|||
Urban |
Zdefiniuj ColorConfiguration
w ten sposób:
<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>
Można ich potem używać jako źródeł danych zamiast szesnastkowych wartości kolorów. Zwróć uwagę, jak jest określona wartość indeksu, która służy do wyboru pierwszego, drugiego lub trzeciego elementu motywu:
<HourHand resource="hour" ... tintColor="[CONFIGURATION.myThemeColor.0]" />
<MinuteHand resource="minute" ... tintColor="[CONFIGURATION.myThemeColor.1]" />
<SecondHand resource="second" ... tintColor="[CONFIGURATION.myThemeColor.2]" />
W szczególnym przypadku, gdy każdy element ColorOption
ma zdefiniowany tylko jeden kolor, można też odwoływać się do niego jako CONFIGURATION.myThemeColor
bez indeksu.
|
|
Użytkownik może wybrać w edytorze tarczy zegarka dowolny motyw.
Smaki
Uwaga: wersje są obsługiwane w wersji 2 i nowszych formatu tarczy zegarka.
UserConfigurations
zapewniają użytkownikowi dużą elastyczność, ale wraz ze wzrostem liczby zdefiniowanych elementów konfiguracji liczba kombinacji może gwałtownie wzrosnąć.
Flavors
umożliwia definiowanie wstępnie ustawionych wartości dla UserConfigurations
, które warto wyróżnić.
Użytkownik może wybrać jeden z dostępnych wstępnie ustawień w aplikacji towarzyszącej lub wybrać każdą wartość konfiguracji osobno.
Weźmy na przykład tarczę zegarka, w której zdefiniowano 3 ustawienia (dla przejrzystości pominięto elementy wewnętrzne i szczegóły atrybutów):
<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>
Zdefiniowane masz:
- Konfiguracja motywu kolorystycznego, która umożliwia użytkownikowi wybranie motywu do zastosowania. Zdefiniowano 2 motywy: kolorowy i monochromatyczny.
- Lista opcji wyglądu zegara. Masz do wyboru 2 opcje: duży, wyrazisty zegar oraz minimalistyczny zegar.
- Wybór, czy na tarczy zegarka ma być widoczne tętno użytkownika.
Ponadto na tarczy zegarka masz ComplicationSlot
.
Zdecyduj, że chcesz wyróżnić 2 elementy Flavors
dla użytkownika.
Istnieje wiele możliwych kombinacji tych ustawień, ale te są naszym zdaniem najlepsze:
- Sportowy:
- Motyw kolorystyczny o jasnych kolorach, który dodaje energii i pobudza do działania (ID: 0)
- Duża i czytelna tarcza zegara, który widać podczas ćwiczeń (ID: 0)
- Tętno wyświetlane na tarczy zegarka w celu ułatwienia orientacji
- Miejsce na widżet wyświetlające liczbę kroków
- Wyrafinowany smak::
- monochromatyczny motyw kolorystyczny, który pasuje do każdego stroju (identyfikator: 1);
- Minimalna tarcza zegara, która pasuje do każdego środowiska (ID: 1)
- Brak tętna na tarczy zegarka
- Ignorowanie widżetu
Smak musi być włączony w sekcji watch_face_info.xml
:
<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>
...
<MultipleInstancesAllowed value="true" />
<FlavorsSupported value="true" />
</WatchFaceInfo>
Następnie w sekcji UserConfigurations
definiujesz każdą wersję:
<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>