Définir les configurations utilisateur

UserConfigurations vous permet de créer des options parmi lesquelles l'utilisateur peut choisir. Vous pouvez ajuster l'apparence des éléments du cadran en fonction des valeurs choisies.

Les options de configuration utilisateur peuvent être les suivantes:

  • BooleanConfiguration: généralement utilisé lorsque l'utilisateur peut choisir d'afficher ou non un élément, ou de choisir entre deux styles
  • ListConfiguration: fournit à l'utilisateur un éventail d'options. Par exemple, si le cadran propose quatre images d'arrière-plan différentes
  • ColorConfiguration: définit des thèmes de couleur, parmi lesquels l'utilisateur peut sélectionner son thème préféré.

Options booléennes

Les options booléennes sont peut-être les configurations utilisateur les plus simples. Ils peuvent être définis comme suit:

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

Les options booléennes peuvent ensuite être utilisées de deux manières:

  1. En utilisant la structure BooleanConfiguration dans le Scene du cadran:

    <Scene>
        <BooleanConfiguration id="show_date">
            <BooleanOption id="TRUE">
            <!-- ...Content to show date -->
            </BooleanOption>
            <BooleanOption id="FALSE">
            <!-- ...Content when date not required -->
            </BooleanOption>
        </BooleanConfiguration>
    </Scene>
    

    Notez que les options de configuration ne peuvent pas être imbriquées dans leur utilisation. Par conséquent, l'exemple suivant n'est pas valide:

    <!-- 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. Vous pouvez également utiliser l'option de configuration dans des expressions:

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

Options de liste

Les options de liste fonctionnent de manière très similaire aux options booléennes. Par exemple, pour fournir une liste d'images d'arrière-plan parmi lesquelles l'utilisateur peut choisir:

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

Comme pour les options booléennes, vous pouvez utiliser cette fonctionnalité de deux manières:

  1. En utilisant l'élément ListConfiguration dans Scene:

    <ListConfiguration id="bg_img">
      <ListOption id="0">
        <!-- Show background 0 -->
      </ListOption>
      <ListOption id="1">
        <!-- Show background 1 ... etc -->
      </ListOption>
    </ListConfiguration>
    
  2. Vous pouvez également utiliser l'option de configuration dans des expressions plus complexes:

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

Thèmes de couleur

Le format de cadran vous permet de définir des thèmes de couleur via ColorConfiguration. Les utilisateurs peuvent sélectionner le thème de leur choix dans l'éditeur de cadran, et les couleurs de ce thème peuvent apparaître dans la définition de votre cadran.

Par exemple, pour définir un thème avec deux entrées et trois couleurs:

Détendu

Urban

Définissez un ColorConfiguration comme suit:

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

Vous pouvez ensuite les utiliser comme sources de données au lieu de valeurs de couleur hexadécimales. Notez comment la valeur d'index est spécifiée pour sélectionner le premier, le deuxième ou le troisième élément du thème:

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

Dans le cas spécifique où chaque ColorOption ne comporte qu'une seule couleur définie, il est également possible de le référencer sous la forme CONFIGURATION.myThemeColor, sans indice.

INSÉRER LE TEXTE ALT ICI INSÉRER LE TEXTE ALT ICI

L'utilisateur peut ensuite sélectionner l'entrée de thème de son choix dans l'éditeur de cadran.

Saveurs

Remarque: Les variantes sont compatibles avec la version 2 ou ultérieure du format de cadran.

Les UserConfigurations offrent une grande flexibilité à l'utilisateur, mais à mesure que vous augmentez le nombre d'éléments de configuration que vous définissez, le nombre de combinaisons peut devenir écrasant.

Flavors vous permet de définir des préréglages pour les UserConfigurations que vous jugez dignes d'être mis en avant.

L'utilisateur peut ensuite choisir parmi ces variantes prédéfinies dans l'application associée ou continuer à choisir chaque valeur de configuration individuellement.

Prenons l'exemple d'un cadran dans lequel vous définissez trois paramètres (les éléments internes et les détails des attributs ont été omis pour plus de clarté):

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

Vous avez défini:

  1. Configuration d'un thème de couleur, permettant à l'utilisateur de sélectionner le thème de couleur à appliquer. Vous avez défini deux thèmes, l'un coloré et l'autre monochrome.
  2. Liste des options d'apparence de l'horloge. Vous avez défini deux choix : une grande horloge en gras et une horloge plus minimaliste.
  3. Possibilité d'afficher ou non la fréquence cardiaque de l'utilisateur sur le cadran.

De plus, vous avez un ComplicationSlot sur le cadran.

Vous décidez de mettre en avant deux Flavors. Il existe de nombreuses autres combinaisons possibles pour tous ces paramètres, mais voici celles qui, selon vous, fonctionnent le mieux:

  1. Une saveur sportive: elle se compose des éléments suivants :
    1. Le thème de couleurs vives, pour vous donner de l'énergie et vous inciter à être actif (ID: 0)
    2. La grande horloge en gras, pour qu'elle soit visible pendant l'entraînement (ID : 0)
    3. Fréquence cardiaque affichée sur le cadran à titre de référence
    4. Emplacement de la complication affichant le nombre de pas
  2. Un goût sophistiqué: il se compose des éléments suivants :
    1. Le thème de couleur monochrome, qui s'adapte à toutes les tenues (ID: 1)
    2. Horloge minimale, adaptée à tous les environnements (ID: 1)
    3. Aucune fréquence cardiaque affichée sur le cadran
    4. Le créneau de complication n'est pas activé

Les variantes doivent être activées dans watch_face_info.xml:

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

Ensuite, chaque type de produit est défini dans UserConfigurations comme suit:

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