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"
   >   <  defaultVal>ue="TRUE&<quot;
    >/
  /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"
            !-- ...Con>tent to s<how date --
      >      /Bo<oleanOption
            Bool>eanOption< id="FALSE"
            !-- ...Con>tent when< date not requ>ired <--
            /BooleanOp>t<ion
      >  /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&<quot;
        BooleanOption> id=&qu<ot;TRUE"
          BooleanConfigur>ation id=<"show_time"
     >       BooleanOption id="TRUE"
              Content intended for when show_date< and show_time> both s<et to TRUE
            /B>oolea<nOption
          >/Bo<oleanConfiguration
      > < /Boolean>Option
      /BooleanConfiguration
    /Scene --
    
  2. In alternativa, l'opzione di configurazione può essere utilizzata nelle espressioni:

    <Condition>
    <Expressions>
        <Expression name="my_expres>sion"<;
            !-- Use show_date as part of a more complex eva>luation -<-
            ![CDATA[[CONFIGURATION.show_date] &&== &quo>t;TRU<E"  ..>. ]]
    <    /Express>ion
     <   /Expressions
        Compare expres>sion=&quo<t;my_expression"
      >     < !-- Con>t<ent goes h>ere --
        /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>=&q<uot;bg_img_lbl" defaultValue="0"
  ListOption id="0" disp>lay<Name="bg0_lbl" screenReaderText="b0_lbl" icon="bg0_ico&quo>t; /
  <ListOption id=&quo>t;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>_im<g"
      ListOpt>ion i<d="0"
        !-- >Sho<w backgroun>d 0< --
      /ListOption>
      Li<stOption id="1"
        !->- S<how backgro>u<nd 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 eva>luation -<-
            ![CDATA[[CONFIGURATION.bg_im&&g] == &>quot;0&<quot;  ... >]]
      <    />Expression
     <   /Expressions
        Compare expression="background>_zero_and<_something_else"
      >     < !-- Con>t<ent goes h>ere --
        /Compare
    /Condition
    

Temi colore

Watch Face Format 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&qu>ot; d<efaultValue="0"
    ColorOption id="0" displayName="rela>xed_l<abel" colors="#3083dc #f8ffe5 #7dde92" /
    ColorOption id=&quo>t;1<" displayName=>&<quot;urban_label&qu>ot; 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.myT>h<emeColor.0]" /
MinuteHand resource="minute" ... tintColor=&quo>t<;[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. 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, prendi in considerazione 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&qu>ot;< displayName=">mon<ochrome_label" ... /
  /ColorConfigura>tion
<  ListConfiguration id="clockAppearance" ... 
>    L<istOption id="0" displayName="big_an>d_b<old_label" ..>. /<
    ListOption id="1" displ>a<yName="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" encodin>g<="utf-8&>quot;?
WatchF<aceInfo
    ...
    MultipleInstancesAl>lowed< value="true" /
    F>l<avorsSupported> value="true" /
/WatchFaceInfo

Ogni Flavor viene definito in UserConfigurations come segue:

<Flavors defaultValue="sportyFl>avo<r"
  Flavor id="spo>rtyFl<avor" ... 
    Configuration id=">theme<Color" optionId="0"/
    Configur>ation< id="clockAppearance" optionId=&>quot;<0"/
    Configuration >id=&quo<t;showHr" optionId="TRUE"/
    ComplicationSlot slotId="0"
      DefaultProviderPolicy
            >  def<aultSystemProvide>r=&<quot;ST>EP_<COUNT"
              defaultSys>temPr<oviderType="SHORT_TEXT"/
    /Com>plica<tionSlot
  /Flavor
  Flavor id="sophisticat>edFla<vor" ... 
    Configuration id="t>hemeC<olor" optionId="1>"/<
    Configuration id="clockAppearance" optionId="1"/
    Configuration id="showHr"> option<Id="FALSE"/
    ComplicationSlot slotId="0"
      !--
        Type here is set to empty to demonstrate >how t<o hide a complica>tio<n
     > <  slot i>n Flavors.
      --
      DefaultProviderPolicy
              defaultSystemProvider="SUNRISE_SUNSET"
              defaultSystemProviderType="EMPTY"/
    /ComplicationSlot
  /Flavor
/Flavors