Transición de elementos compartidos de Android con Kotlin

La transición de elementos compartidos se ve en la mayoría de las aplicaciones que se utilizan cuando el usuario navega entre dos pantallas. Este tipo de animación se ve cuando un usuario hace clic en los elementos presentes en la lista y navega a una pantalla diferente. Durante estas transiciones, la animación que se muestra se denomina transición de elementos compartidos. En este artículo, veremos la implementación de la transición de elementos compartidos en aplicaciones de Android usando Kotlin. 

Nota : si está buscando integrar la transición de elementos compartidos en Android usando Java. Consulte el siguiente artículo: Transición de elementos compartidos en Android usando Java

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: crea una nueva actividad vacía

Vaya a la aplicación > java > el nombre de su paquete > haga clic con el botón derecho en > Nuevo > Actividad > Actividad vacía y nombre la actividad como MainActivity2 .

Paso 3: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml . Se agregan comentarios dentro del código para comprender el código con más detalle.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
 
    <!-- Textview to display the heading of the app-->
    <TextView
        android:id="@+id/idTVHeading"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="50dp"
        android:layout_marginRight="20dp"
        android:gravity="center"
        android:padding="5dp"
        android:text="Shared Element Transition Example"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="20sp"
        android:textStyle="bold" />
 
    <!--on below line we are creating a simple image view-->
    <ImageView
        android:id="@+id/idIVAndroid"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="50dp"
        android:padding="10dp"
        android:src="@drawable/android"
        android:transitionName="fade" />
 
</RelativeLayout>

Paso 4: trabajar con el archivo activity_main2.xml

Vaya a app > res > layout > activity_main2.xml y agréguele el siguiente código. Se agregan comentarios en el código para conocer en detalle. 

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity2">
 
    <!--on below line we are creating a simple image view
         and specifying a transition name for it -->
    <ImageView
        android:id="@+id/idIVAndroid"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:layout_margin="50dp"
        android:padding="10dp"
        android:src="@drawable/android"
        android:transitionName="fade" />
 
</RelativeLayout>

Paso 5: trabajar con el archivo MainActivity2.kt

Vaya al archivo MainActivity2.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity2.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

package com.gtappdevelopers.kotlingfgproject
 
import android.os.Build
import android.os.Bundle
import android.transition.Fade
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
 
class MainActivity2 : AppCompatActivity() {
    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
         
        // on below line we are creating
        // a variable for fade animation
        val fade = Fade()
         
        // on below line we are excluding our target such
        // as status bar background and navigation bar
        // background from animation.
        fade.excludeTarget(android.R.id.statusBarBackground, true)
        fade.excludeTarget(android.R.id.navigationBarBackground, true)
         
        // on below line we are setting enter
        // and exit transition as fade.
        window.enterTransition = fade
        window.exitTransition = fade
 
    }
}

Paso 6: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

package com.gtappdevelopers.kotlingfgproject
 
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.transition.Fade
import android.widget.ImageView
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityOptionsCompat
import androidx.core.view.ViewCompat
 
class MainActivity : AppCompatActivity() {
 
    // on below line we are creating
    // a variable for our image view.
    lateinit var imageView: ImageView
 
    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
         
        // on below line we are creating
        // a variable for our fade.
        val fade = Fade()
         
        // on below line we are exclusing the target
        // which we dont want to animate such as our
        // status background and navigation background.
        fade.excludeTarget(android.R.id.statusBarBackground, true)
        fade.excludeTarget(android.R.id.navigationBarBackground, true)
         
        // on below line we are specifying
        // enter transition as fade.
        window.enterTransition = fade
         
        // on below line we are specifying
        // exit transition as fade.
        window.exitTransition = fade
         
        // on below line we are initializing
        // our image view with its id.
        imageView = findViewById(R.id.idIVAndroid)
         
        // on below line we are adding on
        // click listener for our image view.
        imageView.setOnClickListener {
            // on below line we are creating a variable
            // for our intent to open a new activity.
            val intent = Intent(this@MainActivity, MainActivity2::class.java)
             
            // on below line we are creating a variable
            // for activity options compact and setting
            // transition for our activity.
            val options = ActivityOptionsCompat.makeSceneTransitionAnimation(
                this@MainActivity, imageView, ViewCompat.getTransitionName(imageView)!!
            )
             
            // on below line we are starting our
            // activity passing bundles.
            startActivity(intent, options.toBundle())
        }
 
    }
}

Ahora ejecute su aplicación para ver el resultado.

Producción:

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *