As complicações são um recurso dos mostradores de relógio físicos e de smartwatches que mostram informações adicionais. Normalmente, o usuário seleciona as informações que são mostradas em uma complicação.
Normalmente, as complicações têm vários formatos:
- Retangular
- Circular
- Arcos ao longo da borda do mostrador do relógio
- Plano de fundo que cobre todo o mostrador do relógio
No Wear OS, o sistema de complementos pode ser dividido em duas partes:
- A fonte de dados de complicação
- A renderização do complemento
Por exemplo, um app de saúde e fitness pode implementar uma fonte de dados de complicação de passos diários. Isso pode ser renderizado pelo mostrador do relógio WFF.
Fontes de dados em complicações
As fontes de dados de complementos especificam apenas os dados a serem renderizados e o tipo de complemento. A fonte de dados não tem participação na determinação de como os dados devem ser representados no mostrador do relógio.
Por exemplo, a fonte de dados de passos diários de saúde e fitness pode produzir os seguintes dados para indicar que o usuário deu 2.400 dos 10.000 passos da meta hoje:
- Tipo:
GOAL_PROGRESS - Valor:
2400 - TargetValue:
10000
Não há nada nesses dados que indique como isso deve ser renderizado.
O mostrador do relógio especifica quais tipos de complementos ele pode renderizar. Isso determina quais fontes de dados ficam disponíveis para o usuário selecionar.
No caso do exemplo de passos diários, você decide na definição do mostrador do relógio como renderizar Value e TargetValue: como texto ou como um indicador de progresso? Isso é uma decisão do designer do mostrador do relógio.
Definir complementos
Oferecer a capacidade de mostrar complementos no mostrador do relógio pode ser valioso para os usuários, já que permite que eles tenham uma variedade maior de informações de relance e personalizadas de acordo com as necessidades.
Decida se e quantas complicações serão compatíveis com o mostrador do relógio, quais serão as formas e o posicionamento delas e quais tipos de dados elas aceitam.
Cada espaço no mostrador do relógio para um complemento é definido como um
ComplicationSlot em que uma área delimitadora é definida para a renderização do
complemento:
<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>
Uma abordagem semelhante pode ser aplicada às outras formas delimitadoras, como retângulo e elipse.
Definir o tipo de complemento e os padrões
O sistema de complementos oferece vários tipos diferentes, o que
permite que o mostrador do relógio expresse o tipo de dados que pode representar na
tela. Por exemplo, um complemento de arco, como mostrado anteriormente, não é adequado para um tipo de dados de complemento baseado em imagem, como SMALL_IMAGE, mas pode funcionar muito bem para dados numéricos, como RANGED_VALUE.
Na declaração ComplicationSlot, defina supportedTypes como a
lista separada por espaços dos tipos que podem ser renderizados nesse slot.
Você também precisa definir a origem padrão para o ComplicationSlot, a menos que permita o tipo EMPTY. Nesse caso, definir um padrão é opcional:
<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>
Além de especificar provedores do sistema, você pode especificar provedores que não são do sistema, como provedores de terceiros para usar por padrão, se eles já estiverem instalados.
Renderizar dados de complementos
Depois de definir o ComplicationSlot, os limites e o elemento Complication
que o contém, use componentes WFF padrão, como PartDraw, PartImage e
PartText para mostrar os dados de complicação.
Os elementos nos dados Complication têm acesso a uma fonte de dados especial: COMPLICATION, que fornece as várias propriedades de dados definidas pela fonte de dados de complicação.
Por exemplo, uma complicação SMALL_IMAGE pode definir os valores COMPLICATION.SMALL_IMAGE
e COMPLICATION.SMALL_IMAGE_AMBIENT. Eles podem ser usados em vez de
recurso em um elemento Image:
<Complication type="SMALL_IMAGE"> <PartImage x="0" y="0" width="100" height="100"> <Image resource="[COMPLICATION.SMALL_IMAGE]" /> </PartImage> </Complication>
Cada tipo de complicação tem um conjunto diferente de propriedades disponíveis
que podem ser definidas. Para uma lista completa de cada uma, consulte a referência Complication.
Este exemplo mostra o texto de uma complicação 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>
Maximizar a utilidade ao renderizar complicações
Há vários desafios ao adicionar ComplicationSlots ao mostrador do relógio:
- Há vários tipos de dados de complementos. Diferentes apps podem oferecer um ou vários desses recursos.
- Cada tipo de dados de complicação, além de ter propriedades obrigatórias, também tem muitas propriedades opcionais. Verifique se a renderização mais útil é feita com base nas propriedades disponíveis, considerando as diferentes combinações.
Para resolver esses problemas, algumas estratégias incluem:
- Oferecer suporte a vários tipos de complementos para cada slot. Por exemplo,
SHORT_TEXTé compatível com muitas fontes de dados de complemento. Portanto, oferecer suporte a vários tipos diferentes, comoSHORT_TEXT RANGED_VALUEpara um complemento circular pequeno, aumenta a compatibilidade. - Ofereça diferentes tipos de complementos no mostrador do relógio. Por exemplo, você pode oferecer suporte a
RANGED_VALUEeGOAL_PROGRESSem complicações de arco posicionadas na borda eSHORT_TEXTeSMALL_IMAGEem complicações circulares no corpo do mostrador do relógio. - Verifique os elementos opcionais de cada tipo de dados. Por exemplo,
SHORT_TEXTaceita opcionalmente uma propriedade de título e uma imagem. O layout para renderizar os dados disponíveis pode variar dependendo da disponibilidade de uma imagem ou um título.