Ejemplos de animaciones de transición de actividades Android paso a paso tanto en Kotlin como en Java.

Para crear una aplicación moderna, es posible que desee utilizar animaciones de transición en su actividad. Android Framework proporciona la capacidad de inducir transiciones animadas elegantes al abrir o salir de una actividad. En este artículo queremos ver cómo incluir dichas transiciones.

Ejemplo 1: Kotlin Android - Transiciones de actividad sin ninguna librería

Veamos un ejemplo de cómo crear transiciones animadas sin usar una librería de terceros.

Paso 1: Dependencias

No se necesita ninguna dependencia de terceros.

Paso 2: Animaciones

El siguiente paso es escribir estas animaciones en XML e incluirlas en un directorio de recursos llamado anim. Si dicho directorio no existe en tu aplicación, entonces créalo.

Después de crear el directorio anim añadiremos los siguientes archivos de animación en ellos:

slide_down.xml

Luego añadimos el siguiente código:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="50"
        android:fromYDelta="0%p"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toYDelta="100%p" />

</set>

slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

deslizar_en_la_derecha.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_up.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="100"
        android:fromYDelta="100%"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toXDelta="0" />

</set>

Paso 3: Estilos

En el tercer paso tenemos que aplicar las animaciones a las actividades. Sin embargo, esto se hace de forma declarativa a nivel de tema en lugar de a nivel de actividad

Así que en el archivo styles.xml crear un estilo como sigue:

    <style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
        <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
        <item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
        <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
    </style>

Luego aplícalo al tema de la siguiente manera:

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>
    </style>

Aquí está el styles.xml completo:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>
    </style>

    <style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
        <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
        <item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
        <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
    </style>

</resources>

Paso 4: Actividades

Tendremos tres actividades:

  1. ActividadA
  2. ActividadB
  3. ActividadC

ActividadA.kt

package info.camposha.activity_transitions

import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity

class ActivityA : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_a)
    }

    fun intentB(view: View?) {
        startActivity(Intent(this, ActivityB::class.java))
    }

    fun intentC(view: View?) {
        startActivity(Intent(this, ActivityC::class.java))
    }
}

ActividadB

package info.camposha.activity_transitions

import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity

class ActivityB : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_b)
    }

    fun intentC(view: View?) {
        startActivity(Intent(this, ActivityC::class.java))
    }

    fun intentA(view: View?) {
        startActivity(Intent(this, ActivityA::class.java))
    }
}

ActividadC

package info.camposha.activity_transitions

import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity

class ActivityC : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_c)
    }

    fun intentA(view: View?) {
        startActivity(Intent(this, ActivityA::class.java))
    }

    fun intentB(view: View?) {
        startActivity(Intent(this, ActivityB::class.java))
    }
}

Ese es todo el código kotlin que escribimos.

Paso 5: Diseños

Encuentra los códigos de los layouts en la descarga del código fuente.

Paso 6: Ejecutar

Ejecuta el proyecto y obtendrás lo siguiente:

Ejemplo de Transiciones de Actividad](https://github.com/Oclemy/ActivityTransitions/raw/master/MsActivityTransition.gif)

Paso 7: Descarga

Descargue el código fuente desde aquí.

Ejemplos con Bibliotecas

Para hacer tu aplicación más moderna, puedes incluir animaciones de transición entre actividades. Hay diferentes maneras de hacerlo y en este artículo queremos examinarlas.

(a). Usar la librería de animación Intent

Esta librería es de lo más sencilla. Puedes incluir fácilmente diferentes tipos de animaciones en tus actividades.

Paso 1: Instalación

Empieza por instalar la librería. Está alojada en jitpack:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

`

Luego agrega la declaración de implementación como una dependencia:

implementation 'com.github.hajiyevelnur92:intentanimation:1.0'

Paso 2: Código

Aquí está el código:

import static maes.tech.intentanim.CustomIntent.customType;
//MainActivity or any activity name
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //.....//

        //here is library
        customType(MainActivity.this,"here is animation name");
}
   //Here are the animations
*left-to-right
*right-to-left
*bottom-to-up
*up-to-bottom
*fadein-to-fadeout
*rotateout-to-rotatein

Enlaces

Descargue el código completo aquí.

(b). Transiciones con Bungee

Bungee es una librería ligera para Android que permite realizar animaciones de transición de actividades.

Esta solución soporta un SDK mínimo de 16 (Android Jellybean 4.1).

Bungee tiene 15 animaciones de transición de actividad diferentes:

  • dividir
  • encoger
  • tarjeta
  • entrar y salir
  • deslizar a la izquierda
  • deslizar a la derecha
  • deslizar hacia arriba
  • deslizar hacia abajo
  • deslizar a la izquierda
  • deslizar a la derecha
  • zoom
  • desvanecer
  • girar
  • diagonal
  • molino de viento

Puedes descargar la aplicación de demostración aquí para comprobarla en acción.

Paso 1: Instalarlo

Para instalarlo empieza registrando jitpack como url de repositorio maven en el build.gradle de tu carpeta de proyecto:

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

Luego en el build.gradle de tu carpeta de aplicaciones declara la dependencia como una declaración de implementación:

dependencies {
            implementation 'com.github.Binary-Finery:Bungee:3.0'
    }

Paso 2: Escribir el código

Sólo se necesita una línea de código para utilizar Bungee. Por ejemplo en este caso se dispara una animación de zoom:

startActivity(new Intent(context, TargetActivity.class));
Bungee.zoom(context);  //fire the zoom animation

O digamos que quieres disparar la animación cuando se presiona el botón de retroceso:

@Override
public void onBackPressed(){
  super.onBackPressed();
  Bungee.slideLeft(context); //fire the slide left animation
}

Aquí están todos los métodos disponibles:

Bungee.split(context);
Bungee.shrink(content);
Bungee.card(context);
Bungee.inAndOut(context);
Bungee.swipeLeft(context);
Bungee.swiperRight(context);
Bungee.slideLeft(context);
Bungee.slideRight(context);
Bungee.slideDown(context);
Bungee.slideUp(context);
Bungee.fade(context);
Bungee.zoom(context);
Bungee.windmill(context);
Bungee.diagonal(context);
Bungee.spin(context);

Ejecutar

Ejecuta el proyecto.

Referencia

Aquí están los enlaces de referencia:

1. Leer más
2. Seguir autor del código

Categorizado en:

Etiquetado en: