En este artículo, se cuenta la cantidad de toques que el usuario hace en un corto período de tiempo en una vista en particular. Se puede usar para agregar diferentes respuestas con diferentes toques. Por ejemplo, un toque en la palabra mostrará el significado de la palabra, mientras que un doble toque mostrará sus sinónimos en una aplicación de diccionario. A continuación se muestra un ejemplo en el que la cantidad de toques realizados en la vista de texto se muestra como un 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/tv1" 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 en 0 que mantendrá el recuento de toques que ha realizado el usuario. Cada vez que el usuario toca en un período corto de tiempo, el valor de la variable aumenta en uno. 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() // Handle Multiple Taps on the View//////////////////////////////// handler.postDelayed(Runnable { // Toast the number of Taps of current User Event Toast.makeText(applicationContext, "$numberOfTaps Clicks", Toast.LENGTH_SHORT) .show() }, ViewConfiguration.getDoubleTapTimeout().toLong()) ///////////////////////////////////////////////////////////////////// } } return true } }) } }
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