Entrada de eventos en Android con ejemplo

En Android, existe un gran método para interceptar los eventos de la interacción de un usuario con su aplicación. Al considerar los eventos dentro de su interfaz, el enfoque es capturar los eventos del objeto View preciso con el que interactúa el usuario. La clase View proporciona los medios para intentar hacerlo. Dentro de las variadas clases de vista que usará para componer su diseño, notará varios métodos públicos de devolución de llamadas que parecen útiles para los eventos de la interfaz de usuario. El marco de trabajo de Android llama a estos métodos cuando se produce la acción respectiva en el objeto. Por ejemplo, cuando se toca una vista (como un botón), onTouchEvent()el método se nombra en el mismo objeto. Sin embargo, para interceptar esto, debe extender la clase y anular el método. Sin embargo, no sería práctico extender cada objeto View para manejar tal evento. Esta es la razón por la que la clase View también contiene un conjunto de interfaces anidadas con devoluciones de llamada que simplemente puede definir con mucha más facilidad. Estas interfaces, denominadas detectores de eventos , son su boleto para capturar la interacción del usuario junto con su interfaz de usuario.

Por ejemplo , si un botón debe responder a un evento de clic, debe registrarse para ver el detector de eventos .onClickListener e implementar el método de devolución de llamada onClick() correspondiente. En una aplicación, cuando se detecta un evento de clic de botón, el marco de trabajo de Android llamará al método onClick() de esa vista en particular.

Oyentes de eventos de Android

Event Listener es una interfaz dentro de la clase View que contiene un método de devolución de llamada. El marco de trabajo de Android llamará a estos métodos cuando la Vista que está registrada con el oyente se activa por la interacción del usuario con el elemento en la interfaz de usuario. En las interfaces de escucha de eventos se incluyen los siguientes métodos de devolución de llamada:

Métodos

Oyentes de eventos

Descripción

al hacer clic()

Ver.OnClickListener

Este método se llama cuando el usuario toca el elemento o se enfoca en el elemento con las teclas de navegación o el trackball y presiona la tecla «enter» adecuada o presiona el trackball.

onLongClick()

Ver.OnLongClickListener

Esto se llama cuando el usuario toca y mantiene presionado el elemento, o enfoca el elemento con las teclas de navegación o el trackball y presiona y mantiene presionada la tecla «enter» adecuada o presiona y mantiene presionada el trackball (durante un segundo).

onFocusChange()

Ver.OnFocusChangeListener

Esto se llama cuando el usuario navega hacia o desde el elemento, usando las teclas de navegación o el trackball.

onKey()

Ver.OnKeyListener

Esto se llama cuando el usuario se enfoca en el elemento y presiona o suelta una tecla de hardware en el dispositivo.

en contacto()

Ver.OnTouchListener

 Esto se llama cuando el usuario actúa calificado como un evento táctil, que incluye presionar, soltar o cualquier gesto de movimiento en la pantalla (dentro de los límites del elemento).

onCreateContextMenu()

Ver.OnCreateContextMenuListener

Esto se llama cuando se está construyendo un menú contextual (como resultado de un «clic largo» sostenido).

Nota:

La devolución de llamada onClick() no devuelve ningún valor . Pero la devolución de llamada onLongClick() , onKey(), onTouch() devuelve un valor booleano que indica que simplemente ha consumido el evento y no debe continuar; Es decir, devuelva verdadero para indicar que ha manejado el evento y debe detenerse aquí; devuelva falso si no lo ha manejado y/o si el evento debe continuar para cualquier otro oyente al hacer clic.

Registro de escucha de eventos de Android

El registro de eventos es el proceso mediante el cual un controlador de eventos se registra con un detector de eventos para que se llame al controlador cuando el detector de eventos activa el evento. Este ejemplo ilustra cómo registrar un oyente al hacer clic para un botón 

Kotlin

protected void onCreate(savedValues: Bundle) {
    ...
    val button: Button = findViewById(R.id.button)
    // Register the onClick listener 
    button.setOnClickListener { view ->
        // do something when the button is clicked
    }
    ...
}

Controladores de eventos de Android

Los controladores de eventos son útiles para definir varios métodos de devolución de llamada cuando estamos creando componentes personalizados desde la vista. Los siguientes son algunos de los métodos de devolución de llamada comúnmente utilizados para el manejo de eventos en aplicaciones de Android.

Método

Descripción

onKeyDown() Este método se llama cuando se produce un nuevo evento clave.
onKeyUp() Se llama a este método cuando ocurre un evento de apertura de llave.
onTrackballEvent() Se llama a este método cuando ocurre un evento de movimiento del trackball.
onTouchEvent() Este método se llama cuando ocurre un evento de movimiento de la pantalla táctil.
onFocusChanged() Este método se llama cuando la vista gana o pierde el foco.

Hemos aprendido acerca de los detectores de eventos, los controladores de eventos y sus métodos de devolución de llamadas. Ahora veremos sus implementaciones en nuestra aplicación android.

Ejemplo de eventos de entrada de Android

Veamos la forma de implementar Input Events en Android . Tenga en cuenta que vamos a implementar este proyecto utilizando el lenguaje Kotlin

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 en Kotlin . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: Trabajar con los archivos XML

Para diseñar la interfaz de usuario, el código está presente en la carpeta res\layout en forma de XML. Se utilizan en los archivos de actividad y una vez que el archivo XML está dentro del alcance de la actividad, se puede acceder a los componentes presentes en el XML. 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"?>
<LinearLayout
    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">
  
    <!-- This is the layout for the
         Button which user will click  -->
    <Button
        android:id="@+id/btnClick"
        android:layout_width="200dp"
        android:layout_height="70dp"
        android:layout_gravity="center"
        android:layout_marginTop="200dp"
        android:text="CLICK ME!"
        android:textSize="18sp"
        android:textStyle="bold" />
      
    <!-- This is the layout for the textView, On Click
         of Button the text will appear on the screen  -->
    <TextView
        android:id="@+id/textResult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="50dp"
        android:textColor="#86AD33"
        android:textSize="25sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@id/btnClick" />
  
</LinearLayout>

 
Paso 3: trabajar con el archivo MainActivity

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

import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Register OnClickListener for button
        // call Click Handler method
        findViewById<Button>(R.id.btnClick).setOnClickListener {
            displayTextOnButtonClick(it)
        }
  
        // Register OnLongClickListener for button
        // call Click Handler method
        // Return true to indicate that the event is consumed
        findViewById<Button>(R.id.btnClick).setOnLongClickListener {
            displayTextOnLongButtonClick(it)
            true
        }
    }
  
    // Click handler for the Click me button.
    // Display the text below Click me Button
    // Display text after Button click
    // It has No Return Value
    private fun displayTextOnButtonClick(view: View) {
        val text = findViewById<TextView>(R.id.textResult)
        text.text = "Button Clicked !"
    }
  
    // Click handler for the Click me button.
    // Display the text below Click me Button
    // Display text after Button click for a bit long time (1-2sec)
    private fun displayTextOnLongButtonClick(view: View) {
        val text = findViewById<TextView>(R.id.textResult)
        text.text = "Long Button Clicked !"
    }
}

Producción: 

Conclusión 

Android cierra la brecha entre la interfaz de usuario y el código de back-end de la aplicación a través de los conceptos de detectores de eventos y métodos de devolución de llamada. La clase de vista de Android define un conjunto de detectores de eventos, que se pueden registrar en los objetos de vista. Cada detector de eventos también tiene asociado un método de devolución de llamada. Cuando un evento tiene lugar en una vista en una interfaz de usuario, ese evento se coloca en una cola de eventos y el tiempo de ejecución de Android lo maneja por orden de entrada. Si la vista en la que tuvo lugar el evento ha registrado un oyente que coincide con el tipo de evento, se llama al método de devolución de llamada correspondiente. Este código luego realiza cualquier tarea requerida por la actividad antes de regresar.

Publicación traducida automáticamente

Artículo escrito por vaishnavi8055 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 *