Animação

Defina transições via animations para atributos View suportados. Após a propriedade obter seu novo valor alvo, CapDrive desenha os estados intermediários de acordo com a duração e curva declaradas.

Como acionar animação

animations é um array de declarações de animação em View. property especifica o atributo a ser controlado, como opacity ou sweepAngle. Quando o valor alvo de View muda, a animação correspondente começa a fazer a transição; simplesmente adicionar animação a atributos fixos não produzirá alterações automaticamente.

Uma lista de propriedades suportadas por cada componente é fornecida em sua página. Quando você precisar adicionar, excluir ou reorganizar sub-View dinamicamente, mantenha um key estável para eles para que as atualizações ainda correspondam ao mesmo objeto de desenho.

Tempo, repetição e ângulo

A unidade de duration, delay é segundos, a duração padrão é 0,25 segundos, o atraso é zero e a curva padrão é easeInOut. from/to pode esclarecer os objetivos iniciais e finais, repeat e autoreverse controlar a repetição e ida e volta. A mesma propriedade só deve ser controlada por uma declaração.

Os atributos de período podem usar wrap para selecionar caminhos de transição entre períodos. Por exemplo, startAngle usaria wrap: 360 de 350° a 10°. sweepAngle representa o ângulo varrido real, mantendo as direções positiva e negativa e não suporta wrap.

Exemplo: Arco de Velocidade

Depois de selecionar uma velocidade, o exemplo converte uma faixa de velocidade de 0–200 em 0–360°. Quando a velocidade muda de 50 para 100, o ângulo alvo muda de 90° para 180° e o arco leva 0,25 segundos para completar a transição. A unidade de velocidade atual é usada para a faixa de medição; uma linha horizontal é exibida quando não há medição.

function main() {
  const speed = $data.current.speed?.value;
  if (speed == null) {
    return (
      <Text fontSize={32} color={$env.foreground}>
        —
      </Text>
    );
  }
  return (
    <Circle
      width={120}
      height={120}
      background="clear"
      stroke={$env.accent}
      lineWidth={8}
      startAngle={-90}
      sweepAngle={Math.max(0, Math.min(1, speed / 200)) * 360}
      animations={[
        { property: 'sweepAngle', duration: 0.25, curve: 'easeOut' },
      ]}
    />
  );
}

Mudanças de conteúdo e efeitos dinâmicos

contentAnimation é usado para atualizar conteúdo como texto, imagens ou dados gráficos. O tipo de suporte é determinado pelo componente específico, como transições de texto digital e interpolação de dados gráficos.

A interpolação de forma requer estruturas correspondentes antes e depois, por exemplo, o número de pontos e as configurações de fechamento de Polyline são os mesmos e a sequência de comandos de Path é a mesma. Atualize diretamente quando a estrutura for incompatível. A animação é executada pelo lado do desenho e não requer tempo de loop em main(); a animação não aumenta a frequência de atualização real do sensor ou OBD.