Representa la hora

La función principal de una cara de reloj es mostrar la hora, y el Formato de Caras de Relojes te permite crear relojes analógicos y digitales con los elementos AnalogClock y DigitalClock.

Relojes digitales

Se puede definir un reloj digital básico con los elementos DigitalClock y TimeText dentro de la Scene de la cara de reloj:

<DigitalClock x="100" y="100" width="200" height="50">
    <TimeText x="0" y="0" width="200" height="50" format="hh:mm">
        <Font family="SYNC_TO_DEVICE" size="16" />
    </TimeText>
</DigitalClock>

El atributo format te permite controlar cómo se representa la hora con una combinación de horas, minutos y segundos. Las opciones exactas difieren según la versión del Formato de Caras de Relojes que se use. La versión 2 expande las opciones aquí.

En el ejemplo anterior, Font está configurado para usar la fuente del sistema.

También puede ser útil mostrar la hora de otras ubicaciones del mundo, por ejemplo, un reloj mundial. Esto se puede lograr a través del elemento Localization:

<DigitalClock x="100" y="100" width="200" height="50">
    <Localization timeZone="Europe/London" />
    ...
</DigitalClock>

Relojes analógicos

Para crear un reloj analógico, usa el elemento AnalogClock. Cada uno de los elementos secundarios HourHand, MinuteHand y SecondHand especifica el recurso que se debe usar en la renderización:

<AnalogClock x="0" y="0" width="200" height="200">
    <HourHand resource="hour_hand" ... />
    <MinuteHand resource="minute_hand" />
    <SecondHand resource="second_hand" />
    <!-- Optionally add a Tick or Sweep child element to define SecondHand behavior -->
</AnalogClock>

Especifica el punto de inflexión

Cada uno de los recursos de hora, minuto y segundo se rota a medida que avanza el tiempo, pero es importante especificar el punto correcto alrededor del cual debe pivotar cada uno.

En algunas situaciones, el punto de pivote no está en la parte inferior de la mano y se centra horizontalmente. Esto se debe especificar como <HourHand … pivotY="(pivot_ratio)" />, donde:

$$ pivot\_ratio = \frac{pivot\_height}{full\_height} $$

Cómo aplicar color a las manecillas del reloj

Para permitir que el usuario personalice el aspecto de la cara de reloj, es común tener un color configurable para las manecillas del reloj.

Una forma de lograrlo es a través de tintColor en cada una de las manos para teñir cada una por separado, o en AnalogClock, para teñir todas las manos del mismo color.

Además de permitir que los usuarios tomen colores específicos, puedes proporcionar una opción de configuración a tintColor para permitir que el usuario elija lo siguiente:

<AnalogClock ... tintColor="[CONFIGURATION.handColors.0]" />

Sombra paralela

Para obtener un efecto de manecillas de reloj realista, usar una sombra detrás de cada manecillas puede dar la apariencia de profundidad. Para lograrlo, usa dos de cada tipo de mano, compensa una detrás de la otra y proporciona un recurso independiente para la sombra:

<!-- Offset the shadow by 5 units in both directions -->
<HourHand resource="hour_hand_shadow" ... x="105" y="105">
<!-- ... -->
<HourHand resource="hour_hand" ... x="100" y="100">

Decoraciones para el rostro

Las caras de reloj analógicas suelen tener decoraciones alrededor de la cara que muestran las horas o los minutos. Para lograrlo, existen dos enfoques:

  1. Incluye una imagen de fondo de pantalla completa que contenga la cara de reloj dibujada previamente. Consulta cómo trabajar con imágenes.

    <PartImage x="0" y="0" width="450" height="450" ...>
        <Image resource="watch_face_dial" />
    </PartImage>
    
  2. Dibuja decoraciones separadas y colócalas alrededor del rostro con rotaciones.

    <Group ... >
        <!-- Content for the "12" marker -->
    </Group>
    <Group pivotX="..." pivotY="..." angle="30">
        <!-- Content for the "1" marker -->
    </Group>