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żywany w przypadku sytuacji, w których użytkownik może wyświetlić element lub nie, albo wybrać jeden z 2 stylów.ListConfiguration: udostępnia użytkownikowi szereg opcji. Jeśli na przykład tarcza zegarka ma 4 różne obrazy tła do wyboru,ColorConfiguration: określa motywy kolorystyczne, z których użytkownik może wybrać preferowany motyw.
Opcje logiczne
Opcje logiczne są prawdopodobnie najprostszymi konfiguracjami użytkownika. Można je zdefiniować w ten sposób:
<!-- 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>
Opcje logiczne można wykorzystać na 2 sposoby:
Używanie struktury
BooleanConfigurationw ramach tarczy zegarkaScene:<!-- 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>
Pamiętaj, że opcji konfiguracji nie można zagnieżdżać.
Opcję konfiguracji można też użyć w wyrażeniach:
<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>
Opcje listy
Opcje listy działają bardzo podobnie do opcji logicznych. Na przykład, aby udostępnić użytkownikowi listę obrazów tła do wyboru:
<!-- 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>
Podobnie jak w przypadku opcji logicznych, możesz to zrobić na 2 sposoby:
Używanie elementu
ListConfigurationwScene:<!-- 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>
Opcję konfiguracji można też używać w bardziej złożonych wyrażeniach:
<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>
Kompozycje kolorów
Format tarczy zegarka umożliwia definiowanie motywów kolorystycznych za pomocą elementu ColorConfiguration.
Użytkownicy mogą wybrać motyw w edytorze tarczy zegarka, a kolory z tego motywu mogą pojawiać się w całej definicji tarczy zegarka.
Aby na przykład zdefiniować motyw z 2 wpisami i 3 kolorami, zdefiniuj element ColorConfiguration w ten sposób:
<!-- 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>
Można ich wtedy używać jako źródeł danych zamiast szesnastkowych wartości kolorów. Zwróć uwagę, jak określana jest wartość indeksu, aby wybrać pierwszy, drugi lub trzeci element motywu:
<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>
W przypadku, gdy każdy element ColorOption ma tylko jeden zdefiniowany kolor, można się do niego odwołać jako CONFIGURATION.myThemeColor bez indeksu. Użytkownik może następnie wybrać w edytorze tarczy zegarka motyw, który mu się podoba.
Smaki
Uwaga: warianty są obsługiwane w formacie tarczy zegarka w wersji 2 i nowszych.
UserConfigurations zapewniają użytkownikowi dużą elastyczność, ale wraz ze wzrostem liczby zdefiniowanych elementów konfiguracji liczba kombinacji może się znacznie zwiększyć.
Flavors umożliwia definiowanie ustawień wstępnych dla UserConfigurations, które Twoim zdaniem warto wyróżnić.
Użytkownik może następnie wybrać jeden z tych gotowych smaków w aplikacji towarzyszącej lub nadal wybierać poszczególne wartości konfiguracji.
Załóżmy, że masz tarczę zegara, w której możesz zdefiniować 3 ustawienia:
- Konfiguracja motywu kolorystycznego, która umożliwia użytkownikowi wybór motywu kolorystycznego do zastosowania. Zdefiniowano 2 motywy: jeden kolorowy i jeden monochromatyczny.
- Lista teł. Zdefiniowano 2 opcje, które użytkownik może wybrać.
- Możliwość wyświetlania tętna użytkownika na tarczy zegarka.
Dodatkowo na tarczy zegarka znajduje się ComplicationSlot.
Decydujesz, że chcesz wyróżnić 2 elementy Flavors.
Możliwych jest wiele innych kombinacji tych ustawień, ale te wydają Ci się najlepsze:
- Sportowy charakter:: obejmuje:
- jasny motyw kolorystyczny, który dodaje energii i zachęca do aktywności (ID: 0);
- Pierwszy obraz tła (identyfikator: 0)
- Tętno wyświetlane na tarczy zegarka w celach informacyjnych
- Miejsce na widżet wyświetlające liczbę kroków
- Wyrafinowany smak: obejmuje:
- Monochromatyczny motyw kolorystyczny pasujący do każdego stroju (ID: 1)
- Drugi obraz tła (ID: 1)
- Brak tętna na tarczy zegarka
- Gniazdo widżetu nie jest włączone
Warianty wymagają włączenia w watch_face_info.xml, więc element FlavorsSupported w pliku watch_face_info.xml powinien mieć wartość value="true".
Każda wersja jest zdefiniowana w UserConfigurations w ten sposób:
<!-- 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>