Criando animações no Android
Nos cursos de Android da Caelum, é comum encontrarmos alunos que queiram incorporar efeitos visuais à aplicação. Porém, essa necessidade é mais visível ao se programar jogos, onde é bastante comum o uso de animações, seja dos personagens ou do cenário. Existem várias técnicas para se criar animações, dentre as quais está aquela que é a mais antiga e intuitiva: a animação quadro a quadro.
Primeiramente, vamos colocar o png das nossas imagens na pasta res/drawable. É nessa pasta que o Android vai procurar as imagens usadas numa aplicação. Com os png na pasta, vamos dizer para o Android em qual ordem e por quanto tempo as imagens deverão ser exibidas na nossa animação. Para isso, na pasta res/drawable vamos criar um xml chamado animacao.xml e utilizar uma tag chamada animation-list
:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/imagem1" android:duration="100"/> <item android:drawable="@drawable/imagem2" android:duration="100"/> <item android:drawable="@drawable/imagem3" android:duration="100"/> <item android:drawable="@drawable/imagem4" android:duration="100"/> </animation-list>
Perceba que cada item dessa lista contém a imagem, que está na pasta res/drawable, e a duração do tempo que essa imagem será exibida. Além disso, o atributo android:oneshot
diz se essa animação deve ficar em loop infinito ou parar assim que o último quadro for exibido. No nosso caso, deixaremos em loop infinito ao setar esse atributo como false.
Nossa animação está pronta, agora precisamos atribuí-la a um componente de view da nossa aplicação.
Vamos criar um ImageView
que conterá nossa animação e chamá-lo de animacao
com o uso do atributo android:id
:
<LinearLayout android:layout\_width="match\_parent" android:layout\_height="match\_parent"> <ImageView android:layout\_width="50dp" android:layout\_height="50dp" android:id="@+id/animacao" /> </LinearLayout>
Com esse ImageView
criado, basta setar nosso xml de animação nele:
ImageView imageView = findViewById(R.id.animacao); imageView.setBackgroundResource(R.drawable.animacao); AnimationDrawable animation = (AnimationDrawable) imageView.getBackground(); animation.start();
Com isso, podemos ver nosso ImageView
com uma animação.
Além de animações quadro a quadro, podemos alterar a posição de um elemento de View dando a ilusão de movimento. Para isso, podemos usar a classe TranslateAnimation
.
Vamos deslocar nossa ImageView
para dar a ilusão de movimento:
Animation deslocamento = new TranslateAnimation(0, 1000, 0, 0); deslocamento.setDuration(3000); imageView.startAnimation(deslocamento);
Note que o TranslateAnimation
recebe quatro inteiros: eles significam, respectivamente, as diferenças entre as posições iniciais e finais no eixo x e y. No nosso caso, estamos fazendo um movimento horizontal (por isso os dois ultimos valores são zeros) da esquerda para a direita começando onde o ImageView
estiver posicionado (por isso, o primeiro valor é zero), e indo até a posição 1000 da minha tela.
Após definir as posições do nosso movimento, podemos definir a sua duração com o método setDuration()
.
Além do Animation Drawable, o Android oferece vários outros tipos de animações que são bastante úteis para jogos ou até mesmo para aplicativos comuns.
E se quiser saber mais sobre o desenvolvimento Android e Mobile em geral não deixe de visitar a MobileConf RJ 2014!