几乎所有应用程序需要识别和响应基本事件,例如作为点击和长按。它是如此基础,在大多数秘籍中,我们使用 XMLonClick
属性,但更高级的侦听器需要通过代码进行设置。
Android 提供了一个 Event Listener 接口,用于在发生某些操作时接收单个通知,如下表所示:
onClick()
: 按下视图时调用onLongClick()
: 长按 View 时调用onFocusChange()
:当用户导航到视图或从视图导航时调用onKey()
:按下或释放硬件键时调用onTouch()
: 发生触摸事件时调用
这个秘籍将演示如何响应点击事件,以及长按事件。
准备好
在 Android Studio 中创建一个新项目并调用它:PressEvents
. 使用默认的手机和平板电脑选项,并在提示输入活动类型时选择空活动。
怎么做…
设置接收基本 View 事件非常简单。首先我们将创建一个视图;我们将在我们的示例中使用一个按钮,然后在 Activity 的onCreate()
方法中设置事件监听器。以下是步骤:
- 打开并用以下内容
activity_main.xml
替换现有的:TextView
Button
<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()
方法回调需要与setOnClickListener
. onClick()
打回来:
public void onClick(View v) {}
onClick
那是因为当我们使用 XML属性时,Android 会自动为我们设置回调。此示例还演示了我们可以在单个 View 上拥有多个侦听器。
最后一点请注意,该onLongClick()
方法返回一个布尔值,与大多数其他事件侦听器一样。返回true
表示事件已被处理。
还有更多…
尽管按钮通常用于指示用户应该“按下”的位置,但我们可以将setOnClickListener()
andsetOnLongClickListener()
与任何 View 一起使用,甚至是TextView
.
正如介绍中提到的,还有其他的事件监听器。您可以使用 Android Studio 的自动完成功能。首先键入以下命令:
button.setOn
然后按Ctrl +空格键查看列表。