Android ImageSwitcher es un widget de interfaz de usuario que proporciona un efecto de animación de transición suave a las imágenes mientras cambia entre ellas para mostrarlas en la vista.
ImageSwitcher es una subclase de View Switcher que se utiliza para animar una imagen y mostrar la siguiente.
En general, usamos ImageSwitcher de dos maneras, manualmente en el diseño XML y mediante programación en el archivo Kotlin.
Deberíamos definir un componente XML para usar ImageSwitcher en nuestra aplicación de Android.
XML
<ImageSwitcher android:id="@+id/imgSw" android:layout_width="match_parent" android:layout_height="match_parent"> </ImageSwitcher>
Primero creamos un nuevo proyecto siguiendo los siguientes pasos:
- Haga clic en Archivo , luego en Nuevo => Nuevo proyecto .
- Después de eso, incluya el soporte de Kotlin y haga clic en siguiente.
- Seleccione el SDK mínimo según su conveniencia y haga clic en el botón siguiente .
- Luego seleccione la actividad vacía => siguiente => finalizar .
Diferentes atributos del widget ImageSwitcher
atributos XML | Descripción |
---|---|
Android: identificación | Se utiliza para especificar el id de la vista. |
Android: al hacer clic | Se utiliza para especificar la acción cuando se hace clic en esta vista. |
android:fondo | Se utiliza para establecer el fondo de la vista. |
Android: relleno | Se utiliza para establecer el relleno de la vista. |
Android: visibilidad | Se utiliza para establecer la visibilidad de la vista. |
Android: en Animación | Se utiliza para definir la animación que se utilizará cuando se muestre la vista. |
android:fueraAnimación | Se utiliza para definir la animación que se utilizará cuando la vista esté oculta. |
android:animateFirstView | Se utiliza para definir si animar la vista actual cuando se muestra por primera vez la animación de la vista. |
Modificar archivo activity_main.xml
En este archivo, usamos el diseño de restricciones con ImageSwitcher y Buttons.
XML
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/constraint_layout"> <ImageSwitcher android:id="@+id/imgSw" android:layout_width="match_parent" android:layout_height="250dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="36dp" app:layout_constraintBottom_toTopOf="@+id/prev" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/prev" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="36dp" android:layout_marginTop="36dp" android:text="@string/prev" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/imgSw" /> <Button android:id="@+id/next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="36dp" android:layout_marginEnd="36dp" android:text="@string/next" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toEndOf="@+id/prev" app:layout_constraintTop_toBottomOf="@+id/imgSw" /> </androidx.constraintlayout.widget.ConstraintLayout>
Actualizar el archivo strings.xml
Aquí, actualizamos el nombre de la aplicación usando la etiqueta de string.
XML
<resources> <string name="app_name">ImageSwitcherInKotlin</string> <string name="next">Next</string> <string name="prev">Prev</string> </resources>
Diferentes métodos del widget ImageSwitcher
Métodos | Descripción |
---|---|
setImageDrawable | Se usa para configurar un nuevo elemento de diseño en el siguiente ImageView en el conmutador. |
establecerRecursoImagen | Se utiliza para configurar una nueva imagen en ImageSwitcher con la identificación de recurso dada. |
establecerImagenURI | Se utiliza para establecer una nueva imagen en ImageSwitcher con el URI dado. |
Acceda a ImageSwitcher en el archivo MainActivity.kt
Primero, declaramos una array de flores que contiene el recurso de las imágenes utilizadas para ImageView.
private val flowers = intArrayOf(R.drawable.flower1, R.drawable.flower2, R.drawable.flower4)
luego, accedemos a ImageSwitcher desde el diseño XML y configuramos ImageView para mostrar la imagen.
val imgSwitcher = findViewById<ImageSwitcher>(R.id.imgSw) imgSwitcher?.setFactory({ val imgView = ImageView(applicationContext) imgView.scaleType = ImageView.ScaleType.FIT_CENTER imgView.setPadding(8, 8, 8, 8) imgView })
Además, utilizaremos uno de los métodos anteriores para ImageSwitcher.
imgSwitcher?.setImageResource(flowers[index])
Kotlin
package com.geeksforgeeks.myfirstkotlinapp import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.animation.AnimationUtils import android.widget.Button import android.widget.ImageSwitcher import android.widget.ImageView class MainActivity : AppCompatActivity() { private val flowers = intArrayOf(R.drawable.flower1, R.drawable.flower2, R.drawable.flower4) private var index = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // access the ImageSwitcher val imgSwitcher = findViewById<ImageSwitcher>(R.id.imgSw) imgSwitcher?.setFactory({ val imgView = ImageView(applicationContext) imgView.scaleType = ImageView.ScaleType.FIT_CENTER imgView.setPadding(8, 8, 8, 8) imgView }) // set the method and pass array as a parameter imgSwitcher?.setImageResource(flowers[index]) val imgIn = AnimationUtils.loadAnimation( this, android.R.anim.slide_in_left) imgSwitcher?.inAnimation = imgIn val imgOut = AnimationUtils.loadAnimation( this, android.R.anim.slide_out_right) imgSwitcher?.outAnimation = imgOut // previous button functionality val prev = findViewById<Button>(R.id.prev) prev.setOnClickListener { index = if (index - 1 >= 0) index - 1 else 2 imgSwitcher?.setImageResource(flowers[index]) } // next button functionality val next = findViewById<Button>(R.id.next) next.setOnClickListener { index = if (index + 1 < flowers.size) index +1 else 0 imgSwitcher?.setImageResource(flowers[index]) } } }
Archivo AndroidManifest.xml
XML
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.geeksforgeeks.myfirstkotlinapp"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Ejecutar como emulador:
Haga clic en el botón Siguiente y luego obtendremos la otra imagen animada en la Vista.
Publicación traducida automáticamente
Artículo escrito por Praveenruhil y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA