Android监听点击和长按事件

几乎所有应用程序需要识别和响应基本事件,例如作为点击和长按。它是如此基础,在大多数秘籍中,我们使用 XMLonClick属性,但更高级的侦听器需要通过代码进行设置。

Android 提供了一个 Event Listener 接口,用于在发生某些操作时接收单个通知,如下表所示:

  • onClick(): 按下视图时调用
  • onLongClick(): 长按 View 时调用
  • onFocusChange():当用户导航到视图或从视图导航时调用
  • onKey():按下或释放硬件键时调用
  • onTouch(): 发生触摸事件时调用

这个秘籍将演示如何响应点击事件,以及长按事件。

准备好

在 Android Studio 中创建一个新项目并调用它:PressEvents. 使用默认的手机和平板电脑选项,并在提示输入活动类型时选择空活动

怎么做…

设置接收基本 View 事件非常简单。首先我们将创建一个视图;我们将在我们的示例中使用一个按钮,然后在 Activity 的onCreate()方法中设置事件监听器。以下是步骤:

  1. 打开并用以下内容activity_main.xml替换现有的:TextViewButton
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

2.现在打开MainActivy.java并将以下代码添加到现有onCreate()方法:

Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "Click", Toast.LENGTH_SHORT).show();
    }
});
button.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        Toast.makeText(MainActivity.this, "Long Press", Toast.LENGTH_SHORT).show();
        return true;
    }
});

3. 在设备或模拟器上运行应用程序并尝试常规单击和长按。

这个怎么运作…

在本书中使用的大多数示例中,我们onClick使用以下属性在 XML 中设置侦听器:

android:onClick=""

您可能会注意到 XMLonClick()方法回调需要与setOnClickListeneronClick()打回来:

public void onClick(View v) {}

onClick那是因为当我们使用 XML属性时,Android 会自动为我们设置回调。此示例还演示了我们可以在单个 View 上拥有多个侦听器。

最后一点请注意,该onLongClick()方法返回一个布尔值,与大多数其他事件侦听器一样。返回true表示事件已被处理。

还有更多…

尽管按钮通常用于指示用户应该“按下”的位置,但我们可以将setOnClickListener()andsetOnLongClickListener()与任何 View 一起使用,甚至是TextView.

正如介绍中提到的,还有其他的事件监听器。您可以使用 Android Studio 的自动完成功能。首先键入以下命令:

button.setOn

然后按Ctrl +空格键查看列表。