Animaciones en Android
Animaciones de vistas en Android
Se consideran animaciones a cualquier sensación de movimiento que se realiza de una imagen. Android dispone del paquete Animation que contiene varias clases diseñadas para crear animaciones.
Las animaciones pueden llegar a exigir gran cantidad de recursos de del procesador, por tanto, se deben tratar con precaución ya que pueden ralentizar excesivamente la aplicación. Android permite distintas formas de desarrollar estas animaciones pero es recomendable el desarrollo de animaciones en vistas mediante xml que permite ahorrar cierta cantidad de recursos.
A continuación algunos ejemplos de las animaciones más básicas, compuestas por una imagen que realiza la animación y un botón permite el comienzo. Es recomendable ordenar las animaciones en un directorio nombrado anim.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/imagen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_foreground"
android:layout_gravity="center_horizontal"
android:background="@color/colorPrimary"
></ImageView>
<Button
android:id="@+id/boton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Iniciar"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
Rotación
rotacion.xml
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="//schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:duration="2500"
>
</rotate>
MainActivity.java
package xip.midominio.com.rotacion;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.view.View.OnClickListener;
public class MainActivity extends AppCompatActivity implements OnClickListener {
ImageView imagen;
Button boton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imagen=(ImageView)findViewById(R.id.imagen);
boton= (Button)findViewById(R.id.boton);
boton.setOnClickListener(this);
}
public void onClick(View view) {
switch(view.getId()){
case R.id.boton:
Animation rotacion = AnimationUtils.loadAnimation(this,R.anim.rotacion);
rotacion.reset();
imagen.startAnimation(rotacion);
break;
default:
break;
}
}
}
Transición
transicion.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="//schemas.android.com/apk/res/android"
android:fromYDelta="0"
android:toYDelta="200"
android:duration="2000"
>
MainActivity.java
package xip.midominio.com.transicion;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.view.View.OnClickListener;
public class MainActivity extends AppCompatActivity implements OnClickListener {
ImageView imagen;
Button boton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imagen = (ImageView) findViewById(R.id.imagen);
boton = (Button) findViewById(R.id.boton);
boton.setOnClickListener(this);
}
public void onClick(View view){
switch(view.getId()){
case R.id.boton:
Animation translate= AnimationUtils.loadAnimation(this,R.anim.transicion);
translate.reset();
imagen.startAnimation(translate);
break;
default:
break;
}
}
}
Mostrar/Ocultar
alpha.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="//schemas.android.com/apk/res/android"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="2000"
android:repeatCount="infinite"
>
</alpha>
MainActivity.java
package xip.midominio.com.mostrar_ocultar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.view.View.OnClickListener;
public class MainActivity extends AppCompatActivity implements OnClickListener {
ImageView imagen;
Button boton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imagen = (ImageView) findViewById(R.id.imagen);
boton = (Button) findViewById(R.id.boton);
boton.setOnClickListener(this);
}
public void onClick(View view){
switch(view.getId()){
case R.id.boton:
Animation translate= AnimationUtils.loadAnimation(this,R.anim.alpha);
translate.reset();
imagen.startAnimation(translate);
break;
default:
break;
}
}
}
Para poder comentar es necesario iniciar sesión