原文: https://javatutorial.net/event-handing-android

在先前的教程中,您了解了活动意向和其他内容。 本教程借助示例介绍了 Android 中的事件处理。

事件处理

事件是一个动作。 当用户与移动应用程序交互时,会发生这种情况。 Android 中的事件采用多种不同形式,例如按键,触摸输入和许多其他形式。 触摸屏交互属于触摸事件的类别。 Android 框架将所有事件维护在先进先出(FIFO)队列中。 顾名思义,事件处理程序用于处理 Android 中的事件。 事件处理程序和事件监听器是相关概念。

事件监听器

它是一个包含回调方法的接口。 当用户触发视图元素时,它将调用这些方法。 以下是一些重要的回调方法:

  • OnClickListener():当用户单击任何 UI 元素(如按钮,文本或图像)时,将调用此事件监听器。OnClick()事件处理程序用于处理此监听器。
  • OnLongClickListener():当用户长时间单击任何 UI 元素或按住 UI 元素几秒钟时,将调用此方法。OnLongClick()事件处理程序用于处理此监听器。
  • OnFocusChangeListener():当 UI 元素或小部件失去焦点时,将调用此方法。 只需用户向前导航。OnFocusChange()事件处理程序用于处理此监听器。
  • OnKeyListener():当用户按下键盘上的键时,将调用此方法。OnKey()事件处理程序用于处理此事件。
  • OnTouchListener():当用户触摸屏幕上的任何 UI 元素(例如按下或释放按钮)时,将调用此方法。OnTouch()事件处理程序用于处理此监听器。
  • OnMenuItemClickListener():当用户单击或选择菜单项时使用此方法。OnMenuItemClick()事件处理程序用于处理此监听器。
  • OnCreateContextMenuListener()OnCreateContextMenu()事件处理程序用于处理此监听器。

事件处理示例

让我们开始创建一个示例,说明如何在 Android 应用中使用事件处理程序和事件监听器。 打开 Android Studio 并创建一个新项目。 打开您的activtity_main.xml并添加测试视图,图像视图和按钮。 这是代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. tools:context="MainActivity">
  7. <TextView
  8. android:id="@+id/tv_welcome"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="Welcome to "
  12. android:textColor="@android:color/holo_red_dark"
  13. android:textSize="40dp"
  14. android:layout_centerVertical="true"
  15. android:layout_centerHorizontal="true" />
  16. <ImageButton
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:id="@+id/imageButton"
  20. android:src="@drawable/message"
  21. android:layout_alignParentTop="true"
  22. android:layout_centerHorizontal="true"
  23. android:layout_marginTop="20dp" />
  24. <Button
  25. android:id="@+id/button"
  26. android:layout_width="150dp"
  27. android:layout_height="wrap_content"
  28. android:background="@android:color/holo_red_dark"
  29. android:text="Change Color"
  30. android:textColor="@android:color/background_light"
  31. android:layout_alignParentBottom="true"
  32. android:layout_centerHorizontal="true"
  33. android:layout_marginBottom="70dp" />
  34. <TextView
  35. android:id="@+id/tv_java"
  36. android:layout_width="wrap_content"
  37. android:layout_height="wrap_content"
  38. android:textColor="@android:color/holo_red_dark"
  39. android:textSize="40dp"
  40. android:layout_marginTop="21dp"
  41. android:text="Java Tutorial.net"
  42. android:layout_below="@+id/tv_welcome"
  43. android:layout_centerHorizontal="true" />
  44. </RelativeLayout>

现在在mainActivity.java中编写代码,当用户单击按钮时,文本的颜色将改变,在此实现onClickListener()。 最初,文本颜色为红色,第一次单击时颜色将变为黑色,第二次单击时颜色将变为绿色,依此类推。 这是代码

  1. package com.example.admin.androideventhandling;
  2. import android.graphics.Color;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.TextView;
  8. public class MainActivity extends AppCompatActivity {
  9. TextView welcome;
  10. TextView java;
  11. Button button;
  12. int i=0;
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_main);
  17. welcome = (TextView)findViewById(R.id.tv_welcome);
  18. java = (TextView)findViewById(R.id.tv_java);
  19. button = (Button) findViewById(R.id.button);
  20. button.setOnClickListener(new View.OnClickListener() {
  21. @Override
  22. public void onClick(View v) {
  23. if(i==0) {
  24. welcome.setTextColor(Color.BLACK);
  25. java.setTextColor(Color.BLACK);
  26. button.setBackgroundColor(Color.BLACK);
  27. }
  28. if(i==1) {
  29. welcome.setTextColor(Color.GREEN);
  30. java.setTextColor(Color.GREEN);
  31. button.setBackgroundColor(Color.GREEN);
  32. }
  33. if(i==2) {
  34. welcome.setTextColor(Color.BLUE);
  35. java.setTextColor(Color.BLUE);
  36. button.setBackgroundColor(Color.BLUE);
  37. }
  38. if(i==3) {
  39. welcome.setTextColor(Color.MAGENTA);
  40. java.setTextColor(Color.MAGENTA);
  41. button.setBackgroundColor(Color.MAGENTA);
  42. i=0;
  43. }
  44. i++;
  45. }
  46. });
  47. }
  48. }

在这里运行您的应用程序,输出结果看起来像

Android 中的事件处理 - 图1

事件处理

单击按钮后,文本颜色将更改

Android 中的事件处理 - 图2

事件处理颜色变化

Android 中的事件处理 - 图3

事件处理示例

Android 中的事件处理 - 图4

事件处理:洋红色

Android 中的事件处理 - 图5

事件处理:蓝色

您可以通过单击链接下载此代码。