Las complicaciones son una función de las caras de reloj físicas y de los relojes inteligentes que muestran información adicional. Por lo general, el usuario selecciona qué información se muestra en una complicación.
Por lo general, las complicaciones tienen varias formas:
- Rectangulares
- Circular
- Arcos a lo largo del borde de la cara de reloj
- Fondo que cubre toda la cara de reloj
En Wear OS, el sistema de complicaciones se puede dividir en dos partes:
- La fuente de datos de la complicación
- La renderización de la complicación
Por ejemplo, una app de salud y fitness podría implementar una fuente de datos de complicación de pasos diarios. La cara de reloj de WFF podría renderizar esto.
Fuentes de datos en complicaciones
Las fuentes de datos de complicación solo especifican los datos que se renderizarán y el tipo de complicación. La fuente de datos no participa en la determinación de cómo se deben representar los datos en la cara de reloj.
Por ejemplo, la fuente de datos de la complicación Pasos diarios de salud y fitness puede generar los siguientes datos para indicar que el usuario dio 2,400 de los 10,000 pasos objetivo de hoy:
- Tipo:
GOAL_PROGRESS
- Valor:
2400
- TargetValue:
10000
Ten en cuenta que no hay nada en estos datos que indique cómo se debe renderizar.
La cara de reloj especifica qué tipos de complicaciones puede renderizar. Esto determina qué fuentes de datos están disponibles para que el usuario las seleccione.
En el caso del ejemplo de pasos diarios, en la definición de tu cara de reloj, tú decides cómo renderizar Value
y TargetValue
: ¿como texto o como indicador de progreso? Tú, como diseñador de la cara de reloj, debes decidirlo.
Define las complicaciones
Ofrecer la posibilidad de mostrar complicaciones en la cara de reloj puede ser valioso para los usuarios, ya que les permite tener un mayor rango de información de un vistazo y personalizada según sus necesidades.
Decide si deseas admitir complicaciones en tu cara de reloj y cuántas, cuáles serán sus formas y posiciones, y qué tipos de datos admiten.
Cada espacio en la cara de reloj para una complicación se define como un ComplicationSlot
dentro del cual se define un área de límite para la renderización de la complicación:
<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
x="0" y="0" width="225" height="225">
<BoundingArc centerX="225" centerY="225" width="450" height="450"
startAngle="270" endAngle="360" thickness="50" />
<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>
Se puede aplicar un enfoque similar a las otras formas de límite, como el rectángulo y elipse.
Establece el tipo de complicación y los valores predeterminados
El sistema de complicaciones proporciona varios tipos diferentes, lo que permite que la cara de reloj exprese qué tipo de datos puede representar en la pantalla. Por ejemplo, una complicación de arco, como se mostró anteriormente, no es una buena opción para un tipo de datos de complicación basada en imágenes, como SMALL_IMAGE
, pero podría funcionar muy bien para datos numéricos, como RANGED_VALUE
.
En tu declaración ComplicationSlot
, establece supportedTypes
en la lista de tipos que se pueden renderizar en este espacio, separados por espacios.
También debes establecer la fuente predeterminada para ComplicationSlot
, a menos que permitas el tipo EMPTY
, en cuyo caso establecer una predeterminada es opcional:
<ComplicationSlot slotId="1" ...>
<BoundingArc .../>
<DefaultProviderPolicy
defaultSystemProvider="STEP_COUNT"
defaultSystemProviderType="SHORT_TEXT" />
</ComplicationSlot>
Además de tener que especificar proveedores del sistema, de manera opcional, puedes especificar proveedores que no sean del sistema, como proveedores externos para usar de forma predeterminada, si ya están instalados.
Cómo renderizar datos de complicaciones
Una vez que hayas definido ComplicationSlot
, los límites y el elemento Complication
que lo contiene, usa componentes WFF estándar, como PartDraw, PartImage
y PartText
, para mostrar los datos de Complication.
Los elementos dentro de los datos Complication
tienen acceso a una fuente de datos especial: COMPLICATION
, que proporciona las diversas propiedades de datos establecidas por la fuente de datos de la complicación.
Por ejemplo, una complicación SMALL_IMAGE
puede establecer los valores COMPLICATION.SMALL_IMAGE
y COMPLICATION.SMALL_IMAGE_AMBIENT
. Se pueden usar en lugar del recurso en un elemento Image
:
<Complication type="SMALL_IMAGE">
<PartImage ...>
<Image resource="[COMPLICATION.SMALL_IMAGE]" />
</PartImage>
</Complication>
Cada tipo de complicación tiene un conjunto diferente de propiedades disponibles que se pueden configurar. Para obtener una lista completa de cada una, consulta la referencia de Complication
.
En este ejemplo, se muestra el texto de una complicación SHORT_TEXT
:
<Complication type="SHORT_TEXT">
<PartText ...>
<Text>
<Font ...>
<Template>
<![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
</Template>
</Font>
</PartImage>
</Complication>
Maximiza la utilidad cuando renderizas complicaciones
Existen varios desafíos cuando se agrega ComplicationSlots
a la cara de reloj:
- Existen varios tipos de datos de complicaciones. Las diferentes apps pueden proporcionar uno o varios de estos servicios.
- Cada tipo de datos de complicación, además de tener propiedades obligatorias, también tiene muchas propiedades opcionales. Verifica que la renderización más útil se realice a partir de las propiedades disponibles, teniendo en cuenta las diferentes combinaciones.
Para abordar estos problemas, estas son algunas estrategias:
- Admite varios tipos de complicaciones para cada espacio. Por ejemplo,
SHORT_TEXT
es compatible con muchas fuentes de datos de complicaciones, por lo que admitir una cantidad de tipos diferentes, comoSHORT_TEXT RANGED_VALUE
para una complicación circular pequeña, aumenta la compatibilidad. - Ofrece diferentes tipos de complicaciones en la cara de reloj. Por ejemplo, puedes admitir
RANGED_VALUE
yGOAL_PROGRESS
en complicaciones de arco posicionadas en el borde, ySHORT_TEXT
ySMALL_IMAGE
en complicaciones circulares en el cuerpo de la cara de reloj. - Verifica si hay elementos opcionales para cada tipo de datos. Por ejemplo,
SHORT_TEXT
admite de forma opcional una propiedad de título y una imagen. El diseño para renderizar los datos disponibles puede diferir según si hay una imagen o un título disponibles o no.