Para detectar un triple toque, es decir, cada vez que el usuario toca tres veces en cualquier vista, cómo se detecta y, de acuerdo con la vista, se puede agregar una respuesta correspondiente. Aquí se muestra un ejemplo en el que el usuario toca tres veces la vista, se detecta y se agrega la respuesta correspondiente a la vista en forma de brindis.
Paso 1: crea una actividad vacía en Android Studio. Para crear uno, siga este artículo : https://www.geeksforgeeks.org/android-how-to-create-start-a-new-project-in-android-studio/ . Compruebe si el idioma principal seleccionado es Kotlin.
Paso 2: no se realiza ningún cambio en activity_main.xml. Como ya está presente una vista de texto, se agrega la respuesta para el triple 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"> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="Click Here" /> </RelativeLayout>
Paso 3: en este paso, agregue onTouchLisenter con la vista. Aquí, en el oyente, inicialice una variable a 1 que mantendrá el recuento de toques que ha realizado el usuario. Si el recuento de toques en poco tiempo se convierte en 3, se inicia la respuesta correspondiente a la vista. A continuación se muestra el código de la clase MainActivity.kt.
Kotlin
package org.geeksforgeeks.tripletap import android.os.Bundle import android.os.Handler import android.view.MotionEvent import android.view.View import android.view.ViewConfiguration import android.widget.Button import android.widget.RelativeLayout 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) // Declaring Text View from the Layout file val tvv = findViewById<TextView>(R.id.tv) // Implementing onTouchListener on our Text View tvv.setOnTouchListener(object : View.OnTouchListener { // Handler to handle the number of clicks var handler: Handler = Handler() var numberOfTaps = 0 var lastTapTimeMs: Long = 0 var touchDownMs: Long = 0 override fun onTouch(v: View?, event: MotionEvent): Boolean { when (event.action) { MotionEvent.ACTION_DOWN -> touchDownMs = System.currentTimeMillis() MotionEvent.ACTION_UP -> { // Handle the numberOfTaps handler.removeCallbacksAndMessages(null) if (System.currentTimeMillis() - touchDownMs > ViewConfiguration.getTapTimeout()) { //it was not a tap numberOfTaps = 0 lastTapTimeMs = 0 } if (numberOfTaps > 0 && System.currentTimeMillis() - lastTapTimeMs < ViewConfiguration.getDoubleTapTimeout() ) { // if the view was clicked once numberOfTaps += 1 } else { // if the view was never clicked numberOfTaps = 1 } lastTapTimeMs = System.currentTimeMillis() // Triple Tap if (numberOfTaps == 3) { Toast.makeText(applicationContext, "Triple-Click", Toast.LENGTH_SHORT).show() // Double tap } else if (numberOfTaps == 2) { handler.postDelayed(Runnable { Toast.makeText(applicationContext, "Double-Click", Toast.LENGTH_SHORT) .show() }, ViewConfiguration.getDoubleTapTimeout().toLong()) } } } return true } }) } }
Salida :
Publicación traducida automáticamente
Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA