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

Comentarios

  1. Hola , muchas gracias por el vídeo , tengo dos preguntas
    1 :
    @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

    ResponderEliminar

Publicar un comentario

Gracias por compartir tus comentarios con nosotros, si el comentario requiere de alguna respuesta por parte de nosotros, trataremos de responderte lo mas pronto posible.

Entradas populares de este blog

Como conectar MySQL con Android Nativo

Lista con imágenes Android nativo (ListView)

La nueva App de Android para trabajar