Definiowanie konfiguracji użytkowników

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ów
  • ListConfiguration: udostępnia użytkownikowi szereg opcji. Jeśli na przykład tarcza zegarka miała 4 różne obrazy tła do wyboru
  • ColorConfiguration: 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:

  1. Używanie struktury BooleanConfiguration w tarczy zegarka 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>
    

    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> -->
    
  2. 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:

  1. Używanie elementu ListConfiguration w elemencie Scene:

    <ListConfiguration id="bg_img">
      <ListOption id="0">
        <!-- Show background 0 -->
      </ListOption>
      <ListOption id="1">
        <!-- Show background 1 ... etc -->
      </ListOption>
    </ListConfiguration>
    
  2. 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.

WSTAŃ TEKST ALTERNATYWNY TUTAJ WSTAŃ TEKST ALTERNATYWNY TUTAJ

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:

  1. Konfiguracja motywu kolorystycznego, która umożliwia użytkownikowi wybranie motywu do zastosowania. Zdefiniowano 2 motywy: kolorowy i monochromatyczny.
  2. Lista opcji wyglądu zegara. Masz do wyboru 2 opcje: duży, wyrazisty zegar oraz minimalistyczny zegar.
  3. 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:

  1. Sportowy:
    1. Motyw kolorystyczny o jasnych kolorach, który dodaje energii i pobudza do działania (ID: 0)
    2. Duża i czytelna tarcza zegara, który widać podczas ćwiczeń (ID: 0)
    3. Tętno wyświetlane na tarczy zegarka w celu ułatwienia orientacji
    4. Miejsce na widżet wyświetlające liczbę kroków
  2. Wyrafinowany smak::
    1. monochromatyczny motyw kolorystyczny, który pasuje do każdego stroju (identyfikator: 1);
    2. Minimalna tarcza zegara, która pasuje do każdego środowiska (ID: 1)
    3. Brak tętna na tarczy zegarka
    4. 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>