Artigo Java Magazine 42 - Animações com JGoodies

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Conheça a API de animação do JGoodies que permite criar animações de alta qualidade com baixo custo de processamento.

Esse artigo faz parte da revista Java Magazine edição 42. Clique aqui para ler todos os artigos desta edição

Animações com JGoodies

Anime suas telas em tempo real com a JGoodies Animation

Conheça a API de animação do JGoodies que permite criar animações de alta qualidade com baixo custo de processamento.

O desenvolvimento de animações em Java ganhou uma importante contribuição com o lançamento da API JGoodies Animation. Com esse projeto, é possível construir animações em tempo real e de alta qualidade em suas aplicações desktop, exigindo pouca capacidade de processamento.

Neste artigo, são apresentadas as principais características da API Animation que, além de fornecer recursos para o desenvolvimento de animações desde o início, possui um conjunto pronto de animações que podem ser aplicadas de forma rápida e simples no seu projeto. Algumas utilizações típicas da API são na construção animações para telas de abertura (splash), ou para destacar atividades que precisem capturar a atenção do usuário ou indicar que alguma ação mais demorada está ocorrendo.

Animações em tempo real

Antes de entrar nos detalhes sobre a API, vamos apresentar alguns conceitos fundamentais, e um pouco sobre como se chegou às técnicas atuais de animação.

Antes da existência de APIs dedicadas, os desenvolvedores implementavam animações utilizando loops no código (comandos for e while, por exemplo) para trocar imagens e mover desenhos na tela. Essa técnica, no entanto, revelou-se ineficiente por depender muito da capacidade de processamento de cada computador. Os resultados eram às vezes imprevisíveis – a animação podia aparecer correta na máquina do desenvolvedor, mas completamente inadequada na tela do usuário final.

O tempo como base

Por isso, passou-se a utilizar o fator tempo como o principal guia para conduzir os movimentos na tela. Com isso o programa calcula o desenho a ser apresentado dependendo de quanto tempo se passou desde o início da animação. Em outras palavras, uma animação baseada no tempo – também chamada de animação em tempo real – define funções que mapeiam o tempo para as propriedades de um determinado elemento na tela. Por exemplo, podemos montar uma função que em 10 segundos faz a largura de um retângulo crescer de 10 para 50 pixels.

As funções definidas para uma animação são processadas dependendo do número de quadros por segundo (FPSFrames Per Second) definido pelo programador. É importante lembrar que para nossos olhos devemos ter pelo menos 24 FPS para que a animação pareça suave e sem falhas. Se essa velocidade não for alcançada (devido a, por exemplo, à incapacidade do computador de desenhar todos os quadros necessários no tempo desejado), começamos a perceber a animação como um conjunto de imagens sendo trocadas.

JGoodies Animation no contexto

Isso, porém, é um problema que dificilmente acontece com as animações feitas com a JGoodies Animation, principalmente devido ao baixo custo de processamento exigido pela API. Na prática, as animações são suaves mesmo em máquinas mais lentas e com pouca memória.

Vale lembrar ainda que a API Animation é baseada nos conceitos descritos pela especificação SMIL (Synchronized Multimedia Integration Language) do W3C, porém utilizando Java para descrever as animações ao invés de XML. Para mais detalhes sobre essa especificação, visite w3.org/AudioVideo.

Exemplo com a API Animation

Apresentaremos agora como utilizar a API Animation em aplicações Swing. Nosso exemplo aborda as formas de animação que já vêm prontas na API e causam um efeito visual muito agradável. O código completo da aplicação está disponível para download no site da Java Magazine.

O exemplo usa várias bibliotecas do JGoodies. Para obtê-las visite o site jgoodies.com, navegue por Downloads>Libraries e baixe os arquivos zip das APIs Forms, Binding e Animation[1]. Os pacotes contêm exemplos, documentação, código-fonte e os JARs que devem ser incluídos no classpath da aplicação de exemplo.

Tipos de Animação

Vamos ilustrar as diferentes formas de animação que estão disponíveis na API. A tela da aplicação (Figura 1) é bem simples e contém apenas uma área onde a animação ocorre e um botão para iniciá-la.

 

Figura 1. Tela do exemplo em diferentes momentos.

Dadas as restrições da página impressa, é difícil conseguir passar a exata noção das animações na revista. Recomendo então que o leitor faça o download do código e execute a aplicação durante a leitura para ter a idéia precisa do que está sendo criado.

O exemplo é basicamente uma seqüência de frases que são apresentadas gradativamente na tela. Ao fundo, temos uma animação que lembra raios rodando no sentido horário, a qual o JGoodies chama de “animação do ventilador” (fan animation, em inglês). Os textos são apresentados na seguinte ordem:

 

Bem-vindo ao JGoodies

Essa é a API Animation

na Java Magazine

Tornando a GUI das suas aplicações

Mais elegante e atraente

Animação letra a letra é legal!

 

As animações que estão relacionadas a cada uma dessas frases estão descritas na Tabela 1. Após a apresentação dos textos, temos um efeito de desfoque que faz uma imagem surgir do fundo branco até atingir o foco total alguns segundos depois (Figura 7).

 

Frase

Animação

Descrição

Bem-vindo ao JGoodies

Esmaecimento

(Fade)

O texto surge do fundo branco, permanece um tempo e desaparece da mesma forma que surgiu (Figura 2).

Essa é a API Animation

Escala

(Scale)

O texto surge do fundo branco, permanece um tempo e desaparece crescendo na direção do usuário (Figura 3).

na Java Magazine

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?