Transiciones entre Activities Andriod Nativo
Los recursos de animaciones en Android se crean mediante xml que hay que guardar en la carpeta anim que en la mayoría de casos hay que crear para el proyecto, en estos xml creamos las diferentes animaciones que queremos que tenga nuestro proyecto. para mayor información visita la pagina http://developer.android.com/guide/topics/resources/animation-resource.html. Una cosa que hay que tener en cuenta es que cada animación que generemos debe tener un xml de entrada y otro de salida.
Lo primero que vamos hacer es crear nuestro proyecto en Android Studio al cual vamos a llamar transicionesActivities y en las opciones de Activity dejamos el Blank Activity. si no sabes como crear un nuevo proyecto en Android Studio te recomiendo ver el tutorial donde les enseñamos como hacerlo aquí.
En nuestro MainActivity vamos a crear las funciones para los botones. (forwardZoom, left, fade, byDefault)
MainActivity.java
package android.ejemplo.com.transicionesactivities; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void forwardZoom(View button) { startActivity(new Intent(this, SecondActivity.class)); overridePendingTransition(R.anim.zoom_forward_in, R.anim.zoom_forward_out); } public void left(View button) { startActivity(new Intent(this, SecondActivity.class)); overridePendingTransition(R.anim.left_in, R.anim.left_out); } public void fade(View button) { startActivity(new Intent(this, SecondActivity.class)); overridePendingTransition(R.anim.fade_in, R.anim.fade_out); } public void byDefault(View button) { startActivity(new Intent(this, SecondActivity.class)); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Lo primero que encontramos en cada función es startActivity(new Intent(this, SecondActivity.class)), esto lo que hace es decirle a Android que cuando se ejecute la función cambie nuestra actividad actual a la de la clase SecondActivity.java, luego encontramos overridePendingTransition(R.anim.zoom_forward_in, R.anim.zoom_forward_out) aquí de estamos diciendo que anime la actividad actual con R.anim.zoom_forward_in y la entrante con R.anim.zoom_forward_out
Creamos la clase SecondActivity.java
package android.ejemplo.com.transicionesactivities; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; /** * Created by jcmolanoro on 17/04/2015. */ public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } public void zoomBack(View button) { startActivity(new Intent(this, MainActivity.class)); overridePendingTransition(R.anim.zoom_back_in, R.anim.zoom_back_out); } public void fade(View button) { startActivity(new Intent(this, MainActivity.class)); overridePendingTransition(R.anim.fade_in, R.anim.fade_out); } public void right(View button) { startActivity(new Intent(this, MainActivity.class)); overridePendingTransition(R.anim.right_in, R.anim.right_out); } public void back(View button) { super.onBackPressed(); } }
Esta función al igual que nuestro MainActivity creamos las funciones de (zoomBack, fade, right, back)
Para cada .java hay que asociar un xml donde creamos los botones para ejecutar las funciones.
activity_main.xml
activity_second.xml
En nuestro AndroidManifest.xml agregamos el llamado la nueva activity SecondActivity de la siguiente manera
AndroidManifest.xml completo
Listo ya solo nos queda crear los xml con las animaciones para cada botón.
Fade
fade_in.xml
fade_out.xml
Left
left_in.xml
left_out.xml
Rigth
rigth_in.xml
rigth_out.xml
Zoom back
zoom_back_in.xml
zoom_back_out.xml
Zoom forward
zoom_forward_in.xml
zoom_forward_out.xml
Les dejo un vídeo del todo el proceso para aclarar algunas dudas.
Recuerden que pueden preguntar por medio de el blog en los comentarios o en el canal de youtube Hablemos de Android
Hola , muchas gracias por el vídeo , tengo dos preguntas
ResponderEliminar1 :
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
Me tira error en (R.menu.menu_main, menu); : Exactamente en menu que esta despues de R. osea en R.MENU.....
Y tambien en :
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
: action_settings aca me tira el segundo error ....
Disculpa ..pero soy demasiado nuevo en esto y te agradecería cualquier ayuda
mi correo es : leito4k@gmail.com
Eliminar