Doble toque en un botón en Android

Detectar un doble toque en el botón, es decir, cada vez que el usuario toca dos veces en cualquier botón, cómo se detecta y, de acuerdo con el botón, se puede agregar una respuesta correspondiente. Aquí se muestra un ejemplo en el que se detecta el doble toque en el Botón y se le agrega la respuesta correspondiente en forma de brindis.

Paso 1: crea una actividad vacía en Android Studio. Para crear uno, siga este artículo: ¿Cómo crear/iniciar un nuevo proyecto en Android Studio? . Compruebe si el idioma principal seleccionado es Kotlin.

Paso 2: en activity_main.xml, agregue un botón que detectará el doble toque.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
  <!--Declare a button which shall be used to detect double taps-->
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Double Tap"
        />
  
</RelativeLayout>

Paso 3: en este paso, agregue la clase abstracta para el doble toque y configure onClickListener que usará la clase abstracta. y mostrar el brindis. A continuación se muestra el código de la clase MainActivity.kt.

Kotlin

package org.geeksforgeeks.doubletap_onbutton
  
import android.os.Bundle
import android.view.View
import android.widget.TextView
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 the button from the layout file as Text View
        // Since the method works only on Views
        val dBtn = findViewById<TextView>(R.id.btn)
  
          
        // Implementing a DoubleClickListener on the Button
        dBtn.setOnClickListener(object : DoubleClickListener() {
            override fun onDoubleClick(v: View?) {
                Toast.makeText(applicationContext,"Double Click",Toast.LENGTH_SHORT).show()
            }
        })
    }
  
    // This class has methods that check if two clicks were registered
    // within a span of DOUBLE_CLICK_TIME_DELTA i.e., in our case
    // equivalent to 300 ms
    abstract class DoubleClickListener : View.OnClickListener {
        var lastClickTime: Long = 0
        override fun onClick(v: View?) {
            val clickTime = System.currentTimeMillis()
            if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA) {
                onDoubleClick(v)
            }
            lastClickTime = clickTime
        }
  
        abstract fun onDoubleClick(v: View?)
  
        companion object {
            private const val DOUBLE_CLICK_TIME_DELTA: Long = 300 //milliseconds
        }
    }
}

 

Salida 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 *