长按是指按下触摸屏上的物理按钮或点击虚拟按钮,然后将其按住一两秒钟。长按或长按可在触摸屏,智能手机,平板电脑和智能手表上使用,从而增加了用户界面的灵活性。典型的“短按”或“短按”执行一项操作,而按住/轻按并按住同一按钮一小段时间会激活另一项操作。长按可让您获取一些信息,从网络上下载照片,编辑图片等。
我们在哪里可以使用此功能?
如前所述,长按可以用于很多应用,下面列出了一些:
- 获取信息
- 下载照片
- 编辑图片
- 在文本视图上进行复制,剪切,粘贴操作
通过本文,我们希望扩展关于长按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)
}
}