Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Esta visão geral fornece uma introdução ao Gerenciador de Animação 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
- Componentes de Animação do Windows
- A API de animação do Windows
- Configurações
- Recursos avançados
- Tópicos relacionados
Conceitos Básicos
Animation é uma sequência de imagens estáticas que produzem uma ilusão de movimento quando reproduzidas. Usar animação interativa em sua interface de usuário pode dar a um aplicativo uma personalidade única, bem como melhorar a experiência do usuário. A animação pode ajudar a comunicar grandes alterações de estado na interface do utilizador e ajudar a gerir a complexidade da interface do utilizador. A animação também pode aumentar a perceçã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 torná-las mais fáceis de ver pelos 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 grande 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 de descreve como o valor da variável de animação muda à medida que 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 leva essa opacidade de um valor de 50 para 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, em seguida, 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:
-
gestor de animação
-
Os aplicativos usam um objeto gerenciador de animações para criar variáveis de animação e storyboards, agendar e controlar animações e atualizar informações de estado antes que o aplicativo desenhe cada quadro. Um único objeto de 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 qualquer animação, um aplicativo precisa criar objetos variáveis de animação. Uma variável de animação representa um aspeto de um elemento visual a ser animado. A variável é um valor escalar de ponto flutuante, 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 a ser animado. O valor inicial de uma variável de animação é especificado quando a variável é criada. Depois disso, o seu valor não pode ser alterado diretamente; ele deve ser atualizado através do gerenciador de animação.
Uma variável de animação pode ser identificada por uma etiqueta e, que é uma combinação de um identificador inteiro com um ponteiro para um objeto COM. Uma tag não precisa ser exclusiva, a menos que o aplicativo a use para procurar uma variável. Por padrão, uma variável de animação não tem uma tag e qualquer tentativa de ler sua tag falhará até que uma tenha sido definida.
-
sistema de cronometragem
-
A Animação do Windows inclui um sistema de temporização 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 controlar a renderização de animação, indicando automaticamente a passagem de uma pequena unidade de tempo, chamada de tick. O sistema de temporização monitora o desempenho geral de renderização do sistema e ajusta animações aumentando ou diminuindo dinamicamente a frequência dos intervalos de tempo. As aplicações podem permitir que um temporizador acione o gestor de animação e podem registar um manipulador de eventos para ser notificado antes e depois que o gestor for atualizado a cada ciclo. Os aplicativos podem especificar a taxa de quadros de animação mínima aceitável para um temporizador e ser notificados se a taxa de quadros real de uma animação cair abaixo dessa taxa.
Para conservar os recursos do sistema, um temporizador pode ser configurado para se desativar quando nenhuma animação estiver 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 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 conduzir a animação
- Ganchos de eventos para monitorizar o estado e o progresso da animação
Para obter a referência completa da API, consulte Referência de Animação do Windows. Para obter um código de exemplo, 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. A seguir estão os mecanismos de temporização suportados pela Animação do Windows:
Application-Driven Animação
Os aplicativos que usam uma API gráfica acelerada por hardware podem sincronizar com a taxa de atualização do monitor para renderizar animações suaves. Como alternativa, um aplicativo pode usar um mecanismo de temporização 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 de animação do Windows quando o aplicativo está dirigindo 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 gerenciador para ser notificado quando houver animações agendadas e pode detetar quando o agendamento está vazio para que possa parar de redesenhar.
Timer-Driven Animação
Em vez de atualizar o gerenciador de animação diretamente, os aplicativos podem permitir que o temporizador de animação diga 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 fazê-lo e usar a animação orientada por aplicativo.
O diagrama a seguir mostra as interações entre um aplicativo e os componentes de animação do Windows quando o temporizador de animação está gerando atualizações de animação.
O temporizador pode ser configurado para ser executado somente quando as animações são agendadas; Fazer isso é uma simples questão de passar um parâmetro específico quando o temporizador e o gerenciador de animação estão conectados.
Funcionalidades avançadas
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 sensível ao contexto
-
Não é necessário fixar a duração de uma transição; ela pode ser determinada 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 aos olhos se a posição e a velocidade de um objeto em movimento não saltarem instantaneamente entre os valores. Quando um novo storyboard interrompe um que está sendo jogado no momento, a correspondência de velocidade permite que o novo storyboard continue sem problemas onde o anterior terminou.
-
gestão 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, a Animação do Windows permite que o aplicativo determine as prioridades relativas de quaisquer dois storyboards.
Gestão de Contenção
Os desenvolvedores podem implementar um callback de comparação de prioridade para comparar a prioridade do storyboard a ser agendado e o storyboard que já está na fila de execução. Um aplicativo que implementa uma comparação de prioridade pode usar qualquer lógica preferida para determinar quando um storyboard antecipa outro. Para resolver 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, poderá ser cancelado e imediatamente removido da programação.
- Reduza 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á-lo. As velocidades são igualadas, podendo o novo storyboard continuar suavemente de onde o anterior parou.
- Conclua o storyboard agendado. Um storyboard só pode ser concluído se contiver um loop que se repete indefinidamente. Se o storyboard estiver num loop destes ao ser concluído, a repetição atual termina e o restante do storyboard é depois reproduzido. Se o loop ainda não tiver começado quando um storyboard for concluído, o loop será totalmente ignorado.
- Comprima 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 introduz a possibilidade de comprimir 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 compressão é aplicada, o tempo é temporariamente acelerado para os storyboards afetados, fazendo com que sejam reproduzidos 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 gerente de animação agenda o storyboard e gerencia a animação.
Para obter mais informações sobre agendamento e gerenciamento de storyboards, consulte Visão geral do Storyboard.
Tópicos relacionados