As complicações são um recurso de mostradores de relógios físicos e de smartwatches que mostram informações adicionais. Normalmente, o usuário seleciona quais informações 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, cobrindo todo o mostrador do relógio
No Wear OS, o sistema de complicações pode ser dividido em duas partes:
- A fonte de dados da complicação
- A renderização da complicação
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 de relógio WFF.
Fontes de dados em complicações
As fontes de dados de complicação especificam apenas os dados a serem renderizados e o tipo de complicação. A origem de dados não tem papel na determinação de como os dados devem ser representados no mostrador do relógio.
Por exemplo, a fonte de dados de complicação de passos diários de saúde e condicionamento físico pode produzir os seguintes dados para indicar que o usuário deu 2.400 dos 10.000 passos alcançados hoje:
- Tipo:
GOAL_PROGRESS
- Valor:
2400
- TargetValue:
10000
Não há nada nesses dados que indique como eles devem ser renderizados.
O mostrador do relógio especifica quais tipos de complicação ele pode renderizar. Isso determina quais fontes de dados estão 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
um indicador de progresso? Isso é para você, como designer do mostrador do relógio, decidir.
Definir complicações
Oferecer a capacidade de mostrar complicações no mostrador do relógio pode ser valioso para os usuários, já que eles podem ter uma maior variedade de informações de relance e personalizadas para suas necessidades.
Decida se e quantas complicações você vai oferecer no mostrador do relógio, quais serão as formas e o posicionamento delas e quais tipos de dados elas vão oferecer.
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="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>
Uma abordagem semelhante pode ser aplicada a outras formas delimitadoras, como retângulo e elipse.
Definir o tipo de complicação e os padrões
O sistema de complicação oferece vários tipos diferentes, o que
permite que o mostrador do relógio expresse o tipo de dados que ele pode representar na
tela. Por exemplo, uma complicação de arco, como mostrado anteriormente, não é uma boa opção
para um tipo de dados de complicação 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, a definição de um padrão é opcional:
<ComplicationSlot slotId="1" ...>
<BoundingArc .../>
<DefaultProviderPolicy
defaultSystemProvider="STEP_COUNT"
defaultSystemProviderType="SHORT_TEXT" />
</ComplicationSlot>
Além de especificar provedores do sistema, você pode especificar provedores não do sistema, como provedores de terceiros para uso padrão, se eles já estiverem instalados.
Renderizar dados de complicação
Depois de definir o ComplicationSlot
, os limites e o elemento Complication
contendo, use componentes padrão do WFF, como PartDraw, PartImage
e
PartText
, para mostrar os dados da 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 da 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 ...>
<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 conferir uma lista completa de cada uma delas, consulte a referência Complication
.
Este exemplo mostra o texto de uma complicação SHORT_TEXT
:
<Complication type="SHORT_TEXT">
<PartText ...>
<Text>
<Font ...>
<Template>
<![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
</Template>
</Font>
</PartImage>
</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 complicação. Vários apps podem fornecer um ou muitos desses recursos.
- Além de ter propriedades obrigatórias, cada tipo de dados de complicação também tem muitas propriedades opcionais. Verifique se a renderização mais útil é feita com base nas propriedades disponíveis, levando em conta as diferentes combinações.
Para resolver esses problemas, algumas estratégias incluem:
- Ofereça suporte a vários tipos de complicação para cada slot. Por exemplo,
SHORT_TEXT
tem suporte de muitas fontes de dados de complicação. Portanto, oferecer suporte a vários tipos diferentes, comoSHORT_TEXT RANGED_VALUE
para uma pequena complicação circular, aumenta a compatibilidade. - Ofereça diferentes tipos de complicação no mostrador do relógio. Por exemplo, você
pode oferecer suporte a
RANGED_VALUE
eGOAL_PROGRESS
em complicações de arco posicionadas na borda eSHORT_TEXT
eSMALL_IMAGE
em complicações circulares no corpo do mostrador do relógio. - Verifique se há elementos opcionais para cada tipo de dados. Por exemplo,
SHORT_TEXT
aceita opcionalmente uma propriedade de título e uma imagem. O layout para renderizar os dados disponíveis pode variar dependendo se uma imagem ou um título estão disponíveis ou não.