长按是指按下物理按钮或点击触摸屏上的虚拟按钮并按住一两秒钟。用于触摸屏、智能手机、平板电脑和智能手表的长按或长按可提高用户界面的灵活性。典型的“短按”或“短按”执行一个操作,而短按/轻按并按住同一个按钮会激活另一个操作。长按可让您获取一些信息、从网络下载照片、编辑图片等。
我们可以在哪里使用此功能?
如前所述,长按可用于很多应用,下面列出了一些应用:
- 获取信息
- 下载照片
- 编辑图片
- 文本视图上的复制、剪切、粘贴操作
通过这篇文章,我们希望扩展我们关于长按按钮以及Android中的TextView等视图的知识。我们已经实现了一种方法,可以检测长按一段时间,如果满足条件,就会生成一个Toast 。请注意,我们将使用 Kotlin语言来实现这个项目。
长按按钮
要在 Android 中检测长按按钮,请执行以下步骤:
第 1 步:创建一个新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Kotlin作为编程语言。
第 2 步:使用 activity_main.xml 文件
转到代表应用程序 UI 的activity_main.xml文件,并创建一个长按会生成 Toast 的 Button。下面是 activity_main.xml文件的代码。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--This button has to be long-clicked-->
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="hold" />
</RelativeLayout>
第 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<Button>(R.id.btn)
// implement a setOnLongClickListener to the
// button that creates a Toast and
// returns true when actually long-pressed
mBtn.setOnLongClickListener {
Toast.makeText(applicationContext, "Button Long Pressed", Toast.LENGTH_SHORT).show()
true
}
}
}
输出:在模拟器上运行
要在 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)
}
}
输出:在模拟器上运行