¿Cómo detectar una pulsación larga en Android?

Una pulsación prolongada se refiere a presionar un botón físico o tocar un botón virtual en una pantalla táctil y mantenerlo presionado durante uno o dos segundos. Empleado en pantallas táctiles, teléfonos inteligentes, tabletas y relojes inteligentes, la pulsación prolongada o el toque prolongado aumentan la flexibilidad de la interfaz de usuario. La típica “pulsación corta” o “toque corto” realiza una operación, mientras que presionar/tocar y mantener presionado ese mismo botón por un corto tiempo activa otra. Una pulsación prolongada le permite obtener información, descargar fotos de la web, editar imágenes y más.

¿Dónde podemos usar esta característica?

Como se mencionó, se puede usar una presión prolongada para muchas aplicaciones, algunas se enumeran a continuación:

  1. Obtener información
  2. Descargar fotos
  3. Editar imágenes
  4. Operaciones de copiar, cortar y pegar en la vista de texto

A través de este artículo, queremos ampliar nuestro conocimiento sobre la pulsación prolongada de un botón , así como una vista como TextView en Android . Hemos implementado un método que detectaría una pulsación prolongada durante un tiempo determinado y, si se cumplen los criterios, se generaría un brindis .

Pulsación larga en un botón

Para detectar una pulsación larga en un botón en Android, sigue los siguientes pasos:

Paso 1: Crear un nuevo proyecto

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: trabajar con el archivo activity_main.xml

Vaya al archivo activity_main.xml que representa la interfaz de usuario de la aplicación y cree un botón que al presionar prolongadamente generaría un brindis. A continuación se muestra el código para el  archivo  activity_main.xml .

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=".MainActivity">
  
    <!--This button has to be long-clicked-->
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="hold" />
  
</RelativeLayout>

Paso 4: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. MainActivity.kt

Kotlin

import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declare a button
        val mBtn = findViewById<Button>(R.id.btn)
  
        // implement a setOnLongClickListener to the 
          // button that creates a Toast and
        // returns true when actually long-pressed
        mBtn.setOnLongClickListener {
            Toast.makeText(applicationContext, "Button Long Pressed", Toast.LENGTH_SHORT).show()
            true
        }
    }
}

Salida: ejecutar en el emulador

Pulsación larga en una vista

Para detectar una pulsación larga en una pantalla en Android, sigue los siguientes pasos:

Paso 1: Crear un nuevo proyecto

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. activity_main.xml (suponiendo que cada nuevo proyecto crea una vista de texto en el diseño de forma predeterminada)

Paso 2: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. MainActivity.kt

Kotlin

import android.os.Bundle
import android.view.GestureDetector
import android.view.GestureDetector.SimpleOnGestureListener
import android.view.MotionEvent
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        // Do Nothing
    }
      
    // GestureDetecctor to detect long press
    private val gestureDetector = GestureDetector(object : SimpleOnGestureListener() {
        override fun onLongPress(e: MotionEvent) {
  
            // Toast to notify the Long Press
            Toast.makeText(applicationContext, "Long Press Detected", Toast.LENGTH_SHORT).show()
        }
    })
  
    // onTouchEvent to confirm presence of Touch due to Long Press
    override fun onTouchEvent(event: MotionEvent?): Boolean {
        return gestureDetector.onTouchEvent(event)
    }
}

Salida: ejecutar en el emulador

Publicación traducida automáticamente

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