Definire le configurazioni utente

UserConfigurations ti consente di creare opzioni tra cui l'utente può scegliere. Puoi modificare l'aspetto degli elementi del quadrante in base ai valori scelti.

Le opzioni di configurazione dell'utente possono essere:

  • BooleanConfiguration: in genere utilizzato per indicare che l'utente può scegliere se mostrare o meno un elemento oppure scegliere tra due stili
  • ListConfiguration: offre all'utente una serie di opzioni. Ad esempio, se il quadrante avesse quattro diverse immagini di sfondo tra cui scegliere
  • ColorConfiguration: definisce i temi a colori, tra cui l'utente può selezionare il preferito.

Opzioni booleane

Le opzioni booleane sono forse le più semplici delle configurazioni utente. Possono essere definiti come segue:

<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>

Le opzioni booleane possono essere utilizzate in due modi:

  1. Utilizzo della struttura BooleanConfiguration all'interno del quadrante 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>
    

    Tieni presente che le opzioni di configurazione non possono essere nidificate nel loro utilizzo, pertanto quanto segue non è valido:

    <!-- 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. In alternativa, l'opzione di configurazione può essere utilizzata nelle espressioni:

    <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>
    

Opzioni elenco

Le opzioni di elenco funzionano in modo molto simile alle opzioni booleane. Ad esempio, per fornire un elenco di immagini di sfondo tra cui l'utente può scegliere:

<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>

Come per le opzioni booleane, esistono di nuovo due modi per utilizzarle:

  1. Utilizzo dell'elemento ListConfiguration in Scene:

    <ListConfiguration id="bg_img">
      <ListOption id="0">
        <!-- Show background 0 -->
      </ListOption>
      <ListOption id="1">
        <!-- Show background 1 ... etc -->
      </ListOption>
    </ListConfiguration>
    
  2. In alternativa, l'opzione di configurazione può essere utilizzata in espressioni più complesse:

    <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>
    

Temi colore

La funzionalità Formato quadrante ti consente di definire temi di colore tramite ColorConfiguration. Gli utenti possono selezionare il tema che preferiscono dall'editor del quadrante e i colori di questo tema possono essere visualizzati nella definizione del quadrante.

Ad esempio, per definire un tema con due voci e tre colori:

Rilassato

Urban

Definisci un ColorConfiguration come segue:

<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>

che possono essere utilizzati come origini dati anziché come valori di colore esadecimale. Nota come viene specificato il valore dell'indice per selezionare il primo, il secondo o il terzo elemento del tema:

<HourHand resource="hour" ... tintColor="[CONFIGURATION.myThemeColor.0]" />
<MinuteHand resource="minute" ... tintColor="[CONFIGURATION.myThemeColor.1]" />
<SecondHand resource="second" ... tintColor="[CONFIGURATION.myThemeColor.2]" />

Nel caso specifico in cui ogni ColorOption abbia un solo colore definito, è possibile anche fare riferimento a CONFIGURATION.myThemeColor senza l'indice.

INSERISCI IL TESTO ALT QUI INSERISCI IL TESTO ALT QUI

L'utente può quindi selezionare la voce del tema che preferisce nell'editor del quadrante.

Aromi

Nota: i gusti sono supportati dalla versione 2 e successive del formato del quadrante.

UserConfigurations offrono all'utente molta flessibilità, ma man mano che aumenti il numero di elementi di configurazione definiti, il numero di combinazioni può crescere in modo esponenziale.

Flavors ti consente di definire preset per i UserConfigurations che ritenga opportuno mettere in evidenza.

L'utente può quindi scegliere tra questi preset all'interno dell'app complementare o continuare a scegliere ogni valore di configurazione singolarmente.

Ad esempio, considera un quadrante in cui definisci tre impostazioni (per chiarezza, sono stati omessi gli elementi interni e i dettagli degli attributi):

<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>

Hai definito:

  1. Una configurazione del tema a colori che consente all'utente di selezionare il tema da applicare. Hai definito due temi, uno a colori e uno monocromatico.
  2. Un elenco di opzioni per l'aspetto dell'orologio. Hai definito due opzioni, un orologio grande e in grassetto e un orologio dall'aspetto più minimalista.
  3. La possibilità di scegliere se mostrare o meno la frequenza cardiaca dell'utente sul quadrante.

Inoltre, sul quadrante è presente il simbolo ComplicationSlot.

Decidi che ci sono due Flavors che vuoi evidenziare all'utente. Esistono molte altre combinazioni possibili di tutte queste impostazioni, ma queste sono quelle che ritieni più efficaci:

  1. Un'atmosfera sportiva: sarà composta da:
    1. Il tema a colori vivaci, per darti energia e metterti in movimento (ID: 0)
    2. L'orologio grande e in grassetto, in modo che sia visibile durante l'allenamento (ID: 0)
    3. Battito cardiaco visualizzato sul quadrante come riferimento
    4. Lo spazio per le complicazioni che mostra il numero di passi
  2. Un sapore sofisticato: sarà composto da:
    1. Il tema a colori monocromatico, abbinabile a qualsiasi outfit (ID: 1)
    2. L'orologio minimalista, che si adatta bene a qualsiasi ambiente (ID: 1)
    3. Nessun battito cardiaco visualizzato sul quadrante
    4. Lo spazio per le complicazioni non è abilitato

I gusti devono essere attivati in watch_face_info.xml:

<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>
    ...
    <MultipleInstancesAllowed value="true" />
    <FlavorsSupported value="true" />
</WatchFaceInfo>

Ogni Flavor viene definito in UserConfigurations come segue:

<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>