📜  如何在Android中检测长按?

📅  最后修改于: 2021-05-10 14:14:00             🧑  作者: Mango

长按是指按下触摸屏上的物理按钮或点击虚拟按钮,然后将其按住一两秒钟。长按或长按可在触摸屏,智能手机,平板电脑和智能手表上使用,从而增加了用户界面的灵活性。典型的“短按”或“短按”执行一项操作,而按住/轻按并按住同一按钮一小段时间会激活另一项操作。长按可让您获取一些信息,从网络上下载照片,编辑图片等。

我们在哪里可以使用此功能?

如前所述,长按可以用于很多应用,下面列出了一些:

  1. 获取信息
  2. 下载照片
  3. 编辑图片
  4. 在文本视图上进行复制,剪切,粘贴操作

通过本文,我们希望扩展关于长按Button以及Android中诸如TextView之类的视图的知识。我们已经实现了一种方法,该方法可以检测特定时间段内的长按,如果符合条件,则将生成Toast。请注意,我们将使用Kotlin语言实施此项目。

长按一个按钮

要检测长按Android中的按钮,请执行以下步骤:

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。

步骤2:使用activity_main.xml文件

转到代表应用程序UI的activity_main.xml文件,并创建一个Button,长按该按钮将生成Toast。以下是activity_main.xml文件的代码。

XML


  
    
    


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


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)
    }
}


步骤4:使用MainActivity.kt文件

转到MainActivity.kt文件,并参考以下代码。下面是MainActivity.kt文件的代码。在代码内部添加了注释,以更详细地了解代码。

科特林

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

输出:在模拟器上运行

长按视图

要检测在Android屏幕上的长按,请执行以下步骤:

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。activity_main.xml文件无关。因此,请保持文件原样。 (假设默认情况下每个新项目在布局中创建一个textView)

步骤2:使用MainActivity.kt文件

转到MainActivity.kt文件,并参考以下代码。下面是MainActivity.kt文件的代码。在代码内部添加了注释,以更详细地了解代码。

科特林

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)
    }
}

输出:在模拟器上运行

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!