Compartilhar via


Visão geral da animação do Windows

Essa visão geral fornece uma introdução ao Gerenciador de Animações do Windows e se concentra nos principais componentes e conceitos. Para obter mais informações sobre storyboards e transições, consulte Visão geral do Storyboard.

Este tópico contém as seguintes seções:

Conceitos básicos

Animação é uma sequência de imagens ainda sucessivas que produz uma ilusão de movimento quando reproduzida. O uso de animação interativa em sua interface do usuário pode dar a um aplicativo uma personalidade exclusiva, bem como melhorar a experiência do usuário. A animação pode ajudar a comunicar as principais alterações de estado na interface do usuário e ajudar a gerenciar a complexidade da interface do usuário. A animação também pode adicionar à percepção do usuário sobre a qualidade de um aplicativo.

Como exemplos, a Animação do Windows é usada na barra de tarefas para ajudá-lo a gerenciar e acessar arquivos e programas e a Lupa para ampliar diferentes partes da tela para facilitar a visualização dos usuários.

As unidades fundamentais de uma animação são a característica de um elemento visual a ser animado e a descrição de como essa característica muda ao longo do tempo. Um aplicativo pode animar uma ampla variedade de características, como posição, cor, tamanho, rotação, contraste e opacidade.

Na Animação do Windows, uma variável de animação representa a característica a ser animada. Uma transição descreve como o valor dessa variável de animação muda conforme a animação ocorre. Por exemplo, um elemento visual pode ter uma variável de animação que especifica sua opacidade, e uma ação do usuário pode gerar uma transição que usa essa opacidade de um valor de 50 a 100, representando uma animação de semitransparente para totalmente opaca.

Um storyboard é um conjunto de transições aplicadas a uma ou mais variáveis de animação ao longo do tempo. Um aplicativo exibe animações construindo e reproduzindo storyboards e desenhando sequências de quadros discretos à medida que os valores das variáveis de animação mudam ao longo do tempo.

Componentes da Animação do Windows

A Animação do Windows consiste nos seguintes componentes:

gerenciador de animação

Os aplicativos usam um objeto gerenciador de animação para criar variáveis de animação e storyboards, agendar e controlar animações e atualizar informações de estado antes que o aplicativo desenha cada quadro. Um único objeto do gerenciador de animação normalmente gerencia todas as animações em um aplicativo e, portanto, tem controle global sobre todos os storyboards agendados.

variáveis de animação

Antes de iniciar animações, um aplicativo precisa criar objetos de variável de animação. Uma variável de animação representa um aspecto de um elemento visual a ser animado. A variável é um valor de ponto flutuante escalar, embora o valor possa ser arredondado para um valor inteiro.

Uma variável de animação normalmente tem o mesmo tempo de vida que o elemento visual que é para animar. O valor inicial de uma variável de animação é especificado quando a variável é criada. Depois disso, seu valor não pode ser alterado diretamente; ele deve ser atualizado por meio do gerenciador de animação.

Uma variável de animação pode ser identificada por uma marca, que é um emparelhamento de um identificador inteiro com um ponteiro para um objeto COM. Uma marca não precisa ser exclusiva, a menos que o aplicativo a use para pesquisar uma variável. Por padrão, uma variável de animação não tem uma marca e qualquer tentativa de ler sua marca falhará até que uma tenha sido definida.

sistema de tempo

A Animação do Windows inclui um sistema de tempo que ajuda a garantir que as animações sejam renderizadas a uma taxa de quadros suave e consistente, ao mesmo tempo em que reduz o uso de recursos do sistema para renderização quando o sistema está ocupado. Um temporizador ajuda a gerenciar a renderização de animação indicando automaticamente a passagem de uma pequena unidade de tempo, chamada de tique. O sistema de tempo monitora o desempenho geral de renderização do sistema e limita as animações aumentando ou diminuindo dinamicamente a frequência de tiques. Os aplicativos podem permitir que um temporizador conduza o gerenciador de animação e possam registrar um manipulador para ser notificado antes e depois que o gerenciador for atualizado para cada tique. Os aplicativos podem especificar a taxa mínima de quadros de animação aceitável para um temporizador e ser notificados se a taxa de quadros real de uma animação estiver abaixo dessa taxa.

Para conservar recursos do sistema, um temporizador pode ser configurado para desabilitar a si mesmo quando nenhuma animação está ocorrendo.

A API de Animação do Windows

A API de Animação do Windows é uma API baseada em COM de thread único que fornece os seguintes recursos para desenvolvedores:

  • Um objeto do gerenciador de animação, UIAnimationManager, para criar objetos de animação e controlar animações
  • Variáveis de animação e storyboards
  • Uma biblioteca fundamental, UIAnimationTransitionLibrary, de transições prontas para uso
  • Um objeto de temporizador, UIAnimationTimer, para determinar a hora atual e, opcionalmente, para animação de condução
  • Ganchos de evento para monitorar o estado e o progresso da animação

Para obter a referência completa da API, consulte Referência de animação do Windows. Por exemplo, código, consulte Tarefas de animação do Windows e Exemplos de animação do Windows.

Configurações

Os aplicativos devem obter a hora atual antes de agendar uma nova animação. Veja a seguir os mecanismos de tempo compatíveis com a Animação do Windows:

Animação Application-Driven

Os aplicativos que usam uma API gráfica acelerada por hardware podem ser sincronizados com a taxa de atualização do monitor para renderizar animações suaves. Como alternativa, um aplicativo pode usar um mecanismo de tempo próprio para determinar quando desenhar cada quadro de uma animação. Em ambos os casos, o aplicativo informará ao gerenciador de animação quando atualizar seu estado. Um temporizador de animação ainda pode ser usado para determinar a hora atual com alta precisão, nas unidades exigidas pelo gerenciador de animação.

O diagrama a seguir mostra as interações entre um aplicativo e os componentes da Animação do Windows quando o aplicativo está conduzindo atualizações de animação diretamente.

diagrama que mostra as interações entre um aplicativo e os componentes de animação do Windows quando o aplicativo está conduzindo atualizações de animação diretamente.

Na configuração mais simples, um aplicativo redesenhará tudo sempre que a tela for atualizada, mesmo quando nenhuma animação estiver sendo reproduzida. Para evitar o desperdício de trabalho, um aplicativo pode registrar um manipulador de eventos do gerente para ser notificado quando houver animações agendadas e detectar quando o agendamento está vazio para que ele possa parar de redesenhar.

Animação Timer-Driven

Em vez de atualizar o gerenciador de animação diretamente, os aplicativos podem permitir que o temporizador de animação informe ao gerenciador de animação quando atualizar seu estado e simplesmente ser notificado quando cada atualização tiver ocorrido. Essa abordagem é recomendada para APIs gráficas mais antigas. Em geral, se for possível sincronizar com a taxa de atualização do monitor, é melhor fazer isso e usar a animação controlada pelo aplicativo.

O diagrama a seguir mostra as interações entre um aplicativo e os componentes da Animação do Windows quando o temporizador de animação está conduzindo atualizações de animação.

diagrama que mostra as interações entre um aplicativo e os componentes de animação do Windows quando o temporizador de animação está conduzindo atualizações de animação.

O temporizador pode ser configurado para ser executado somente quando as animações são agendadas; Fazer isso é uma questão simples de passar um parâmetro específico quando o temporizador e o gerenciador de animação estiverem conectados.

Recursos avançados

Além de uma base básica para dar suporte à animação, a Animação do Windows inclui suporte para várias técnicas avançadas de animação, incluindo:

duração contextual

A duração de uma transição não precisa ser corrigida; ele pode ser determinado com base no valor e na velocidade da variável animada quando a transição começa.

correspondência de velocidade

O movimento geralmente é mais agradável para os olhos se a posição e a velocidade de um objeto em movimento não saltarem instantaneamente entre valores. Quando um novo storyboard interrompe um que está sendo reproduzido no momento, a correspondência de velocidade permite que o novo storyboard continue sem problemas onde o anterior terminou.

gerenciamento de contenção

Se dois storyboards precisarem atualizar a mesma variável de animação simultaneamente, ocorrerá um conflito de agendamento. Em vez de exigir uma prioridade numérica específica para cada storyboard, o Windows Animation permite que o aplicativo determine as prioridades relativas de qualquer dois storyboards.

Gerenciamento de contenção

Os desenvolvedores podem implementar um retorno de chamada de comparação de prioridade para comparar a prioridade do storyboard de ser agendado e o storyboard que já está na agenda. Um aplicativo que implementa uma comparação de prioridade pode usar qualquer lógica preferencial para determinar quando um storyboard é previamente empcionado por outro. Para resolve o conflito de agendamento, a Animação do Windows pergunta ao aplicativo quais dessas ações podem ser executadas, na seguinte ordem:

  • Cancele o storyboard agendado. Se o storyboard agendado ainda não tiver começado a ser reproduzido, ele poderá ser cancelado e removido imediatamente do agendamento.
  • Corte o storyboard agendado. Quando um novo storyboard corta um storyboard agendado, o storyboard agendado deixa de afetar a variável assim que o novo storyboard começa a animá-la. As velocidades são correspondidas, permitindo que o novo storyboard continue sem problemas de onde o anterior parou.
  • Conclua o storyboard agendado. Um storyboard só poderá ser concluído se contiver um loop que se repete indefinidamente. Se o storyboard estiver em tal loop quando concluído, a repetição atual será concluída e o restante do storyboard será reproduzido. Se o loop ainda não tiver começado quando um storyboard for concluído, o loop será totalmente ignorado.
  • Compacte o storyboard agendado. Se cortar ou cancelar o storyboard agendado não for uma opção, o storyboard poderá ser concluído. A Animação do Windows apresenta a possibilidade de compactar o tempo disponível para o storyboard agendado (e quaisquer storyboards agendados antes dele), para que as variáveis atinjam seu estado final mais rapidamente. Quando a compactação é aplicada, o tempo é temporariamente acelerado para os storyboards afetados, para que eles sejam executados mais rapidamente.

Se nenhuma das ações acima for permitida pelos objetos de comparação de prioridade registrados, a tentativa de agendar o novo storyboard falhará. Por padrão, todos os storyboards podem ser cortados, concluídos ou compactados para evitar falhas, mas nenhum pode ser cancelado.

O diagrama a seguir mostra o ciclo de vida de um storyboard, usando os estados definidos pela enumeração UI_ANIMATION_STORYBOARD_STATUS . Os aplicativos usam a API de Animação do Windows para criar um storyboard e enviá-lo para agendamento. O gerenciador de animação agenda o storyboard e gerencia a animação.

diagrama que mostra como o gerenciador de animação agenda o storyboard e gerencia a animação.

Para obter mais informações sobre agendamento e gerenciamento de storyboard, consulte Visão geral do Storyboard.

Referência de animação do Windows

Exemplos de animação do Windows

Tarefas de animação do Windows