Fornire dati utili tramite le complicazioni

Le complicazioni sono una funzionalità dei quadranti degli orologi fisici e degli smartwatch che mostrano informazioni aggiuntive. In genere l'utente seleziona le informazioni da mostrare in una complicazione.

In genere, le complicazioni hanno diverse forme:

  1. Rettangolare
  2. Circolare
  3. Archi lungo il bordo del quadrante
  4. Sfondo che copre l'intero quadrante

In Wear OS, il sistema di complicazioni può essere suddiviso in due parti:

  1. L'origine dati della complicazione
  2. Il rendering della complicazione

Ad esempio, un'app per la salute e l'attività fisica potrebbe implementare un'origine dati per la complicazione Passi giornalieri. Questo potrebbe essere visualizzato dal quadrante WFF.

Origini dati nelle complicazioni

Le origini dati delle complicazioni specificano solo i dati da visualizzare e il tipo di complicazione. L'origine dati non svolge alcun ruolo nel determinare la modalità di rappresentazione dei dati sul quadrante dell'orologio.

Ad esempio, l'origine dati della complicazione Passi giornalieri per la salute e l'attività fisica potrebbe produrre i seguenti dati per indicare che l'utente ha percorso 2400 dei 10.000 passi previsti per oggi:

Tieni presente che in questi dati non è presente nulla che indichi come devono essere visualizzati.

Il quadrante specifica i tipi di complicazioni che è in grado di eseguire il rendering. Questo determina quali origini dati sono disponibili per la selezione da parte dell'utente.

Nel caso dell'esempio dei passi giornalieri, nella definizione del quadrante decidi come visualizzare Value e TargetValue: come testo o come indicatore di avanzamento? Spetta a te, in qualità di designer del quadrante, decidere.

Definisci le complicazioni

La possibilità di mostrare le complicazioni sul quadrante può essere utile agli utenti, in quanto consente loro di avere una gamma più ampia di informazioni a colpo d'occhio e personalizzate in base alle loro esigenze.

Decidi se e quante complicazioni supportare sul quadrante, quali saranno la loro forma e il loro posizionamento e quali tipi di dati supportano.

Ogni spazio sul quadrante per una complicazione è definito come un ComplicationSlot all'interno del quale viene definita un'area di delimitazione per il rendering della complicazione:

<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="100" y="100" width="100" height="100">
    <BoundingOval x="0"  y="0" width="100" height="100" />
    <Complication type="SHORT_TEXT">
        <!-- Complication content for rendering SHORT_TEXT data goes here -->
    </Complication>
    <Complication type="SMALL_IMAGE">
        <!-- Complication content for rendering SMALL_IMAGE data goes here -->
    </Complication>
</ComplicationSlot>

Un approccio simile può essere applicato alle altre forme di selezione, come il rettangolo e l'ellisse.

Impostare il tipo di complicazione e i valori predefiniti

Il sistema di complicazioni fornisce diversi tipi, che consentono al quadrante di esprimere il tipo di dati che può rappresentare sullo schermo. Ad esempio, una complicazione ad arco, come mostrato in precedenza, non è adatta a un tipo di dati di complicazione basato su immagini come SMALL_IMAGE, ma potrebbe funzionare molto bene per dati numerici come RANGED_VALUE.

Nella dichiarazione ComplicationSlot, imposta supportedTypes sull'elenco separato da spazi dei tipi che possono essere visualizzati in questo spazio.

Devi anche impostare l'origine predefinita per ComplicationSlot, a meno che tu non consenta il tipo EMPTY, nel qual caso l'impostazione di un valore predefinito è facoltativa:

<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="250" y="100" width="100" height="100">
    <DefaultProviderPolicy
        defaultSystemProvider="STEP_COUNT"
        defaultSystemProviderType="SHORT_TEXT" />
    <!-- ... -->
</ComplicationSlot>

Oltre a dover specificare i fornitori di sistema, puoi specificare facoltativamente fornitori non di sistema, ad esempio fornitori di terze parti da utilizzare per impostazione predefinita, se sono già installati.

Visualizzare i dati delle complicazioni

Dopo aver definito ComplicationSlot, limiti e l'elemento contenitore Complication, utilizza i componenti WFF standard, come PartDraw, PartImage e PartText, per visualizzare i dati della complicazione.

Gli elementi all'interno dei dati Complication hanno accesso a un'origine dati speciale: COMPLICATION, che fornisce le varie proprietà dei dati impostate dall'origine dati della complicazione.

Ad esempio, una complicazione SMALL_IMAGE può impostare i valori COMPLICATION.SMALL_IMAGE e COMPLICATION.SMALL_IMAGE_AMBIENT. Questi possono essere utilizzati al posto della risorsa in un elemento Image:

<Complication type="SMALL_IMAGE">
    <PartImage x="0" y="0" width="100" height="100">
        <Image resource="[COMPLICATION.SMALL_IMAGE]" />
    </PartImage>
</Complication>

Ogni tipo di complicazione ha un insieme diverso di proprietà disponibili che possono essere impostate. Per un elenco completo di ciascuna, consulta il riferimento Complication. Questo esempio mostra il testo di una complicazione SHORT_TEXT:

<Complication type="SHORT_TEXT">
    <PartText x="0" y="0" width="100" height="100">
        <Text>
            <Font size="32">
                <Template>
                    <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
                </Template>
            </Font>
        </Text>
    </PartText>
</Complication>

Massimizzare l'utilità durante il rendering delle complicazioni

L'aggiunta di ComplicationSlots al quadrante dello smartwatch presenta una serie di sfide:

  1. Esistono numerosi tipi di dati per le complicazioni. App diverse possono fornire uno o molti di questi.
  2. Oltre alle proprietà obbligatorie, ogni tipo di dati della complicazione ha anche molte proprietà facoltative. Controlla che il rendering più utile sia creato a partire dalle proprietà disponibili, tenendo conto delle diverse combinazioni.

Per risolvere questi problemi, alcune strategie includono:

  1. Supporta più tipi di complicazioni per ogni slot. Ad esempio, SHORT_TEXT è ampiamente supportato dalle origini dati delle complicazioni, quindi il supporto di diversi tipi, come SHORT_TEXT RANGED_VALUE per una piccola complicazione circolare, aumenta la compatibilità.
  2. Offri diversi tipi di complicazioni sul quadrante. Ad esempio, potresti supportare RANGED_VALUE e GOAL_PROGRESS nelle complicazioni ad arco posizionate sul bordo e SHORT_TEXT e SMALL_IMAGE nelle complicazioni circolari nel corpo del quadrante.
  3. Controlla gli elementi facoltativi per ogni tipo di dati. Ad esempio, SHORT_TEXT supporta facoltativamente una proprietà title e un'immagine. Il layout per il rendering dei dati disponibili può variare a seconda che un'immagine o un titolo siano disponibili o meno.