Lavorare con il testo

Per gli orologi digitali, dovresti cercare di utilizzare DigitalClock, se possibile. Per tutto altro testo o orologi che non possono essere rappresentati utilizzando DigitalClock, PartText è il contenitore per il rendering basato su testo.

A seconda che tu voglia mostrare un testo circolare o normale, PartText deve contenere uno degli elementi Text o TextCircular.

Lavorare con i caratteri e i caratteri bitmap

L'utilizzo di caratteri personalizzati consente al quadrante di distinguersi con il proprio stile.

Esistono due modi per utilizzare i caratteri personalizzati, entrambi all'interno dei contenitori TimeText e PartText.

  1. Specifica un carattere personalizzato family nell'elemento Font. È supportata una serie di formati comuni, che devono essere inseriti in res/font

    Ad esempio, utilizzando il carattere Pacifico di Google Fonts e posizionando l'asset come res/font/pacifico.ttf:

    <PartText x="0" y="100" width="450" height="250">
      <Text align="CENTER">
        <Font family="pacifico" size="96">Hello!</Font>
      </Text>
    </PartText>
    
  2. In alternativa, definisci un BitmapFont che fornisca immagini bitmap in res/drawable:

    <WatchFace width="450" height="450" clipShape="CIRCLE">
    <BitmapFonts>
        <BitmapFont name="myhandwriting">
        <Character name="1" resource="digit1" width="50" height="100" />
        <Character name="2" resource="digit2" width="50" height="100" />
        <Character name="3" resource="digit3" width="50" height="100" />
        <Character name="4" resource="digit4" width="50" height="100" />
        <!-- ... -->
        <!-- Treat "12" specially, instead of a 1 followed by a 2-->
        <Word name="12" resource="digit12" width="80" height="100" />
        </BitmapFont>
    </BitmapFonts>
    <!-- ... -->
    

Nota come le sequenze di caratteri possono essere trattate in modo speciale. Ad esempio, se "12" dovesse essere rappresentato con 1 e 2 uniti, questo risultato potrebbe essere ottenuto utilizzando un elemento Word.

Per utilizzare il carattere definito:

<TimeText ... format="hh:mm">
  <BitmapFont family="myhandwriting" size="48" color="#ff0000" />
</TimeText>

Effetti di testo

Il formato del quadrante offre diversi effetti di testo che possono essere applicati, come OutGlow e Shadow. Per utilizzarli, applicali come elementi secondari dell'elemento Font:

<Font family="pacifico" size="96" color="#e2a0ff">
  <OutGlow color="#e8ffb7" radius="30">Hello!</OutGlow>
</Font>

Lavorare con i modelli

Invece di un testo statico, potresti dover creare il testo da origini dati o espressioni.

L'elemento Template ti consente di:

<PartText x="100" y="150" width="300" height="120" >
  <Text align="CENTER">
    <Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
      <Template>Day: %s<Parameter expression="[DAY_OF_WEEK_S]" /></Template>
    </Font>
  </Text>
</PartText>

Lavorare con le risorse

Se il testo statico è invece definito in una risorsa, ad esempio inres/values/strings.xml, è possibile fare riferimento al testo come segue:

<PartText x="100" y="150" width="300" height="120" >
  <Text align="CENTER">
    <!-- greeting defined in res/values/strings.xml -->
    <Font family="pacifico" size="60" weight="BOLD" color="#ffffff">greeting</Font>
  </Text>
</PartText>

In questo modo puoi anche localizzare il quadrante utilizzando diversi qualificatori delle risorse.

Spaziatura dei manici

L'utilizzo di spaziatura e testo può comportare alcune difficoltà:

<!-- greeting defined in res/values/strings.xml -->
<!-- Works correctly: -->
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">greeting</Font>

<!-- Does not render in the right place because of whitespace -->
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
    greeting
</Font>

Questo perché lo spazio è importante in XML. Per evitare questa situazione, racchiudi i contenuti Font in un elemento CDATA:

<!-- Works correctly -->
<Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
  <![CDATA[greeting]]>
</Font>

Un altro esempio si verifica quando si tenta di giustificare il testo al centro:

<!-- Does not render as expected - leading spaces are a problem -->
<PartText x="100" y="150" width="250" height="120" >
  <Text align="CENTER">
    <Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
       Hello
    </Font>
  </Text>
</PartText>
<!-- Works correctly -->
<PartText x="100" y="150" width="250" height="120" >
    <Text align="CENTER">
    <Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
        <![CDATA[Hello]]>
    </Font>
    </Text>
</PartText>

Testo multilinea

Per creare un testo su più righe, utilizza l'attributo maxLines su Text:

<PartText x="75" y="100" width="300" height="350" >
  <Text align="CENTER" maxLines="2">
    <Font family="pacifico" size="60" weight="BOLD" color="#ffffff">
      <![CDATA[Hello Wear OS world]]>
    </Font>
  </Text>
</PartText>