Android中的事件处理

时间:2020-02-23 14:29:26  来源:igfitidea点击:

在前面的教程中,我们已经了解了活动、意图和其他。本教程通过示例说明Android中的事件处理。

事件处理

事件是一种行动。它发生在用户与移动应用程序交互时。Android中的事件有很多不同的形式,比如击键、触摸输入等。触摸屏交互属于触摸事件的范畴。Android框架在一个先进先出(FIFO)队列中维护所有事件。顾名思义,事件处理程序在Android中处理事件。事件处理程序和事件侦听器是相关的概念。

事件监听器

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

OnClickListener():当用户点击按钮、文本或者图像等任何UI元素时,调用此事件侦听器。OnClick()事件处理程序用于处理此侦听器。

OnLongClickListener():当用户长时间点击任何UI元素或者按住某个UI元素几秒钟时,就会调用此方法。OnLongClick()事件处理程序用于处理此侦听器。

OnFocusChangeListener():当UI元素或者小部件失去焦点时调用此方法。用户只需向前导航。OnFocusChange()事件处理程序用于处理此侦听器。

OnKeyListener():当用户按下键盘上的某个键时调用此方法。OnKey()事件处理程序用于处理此事件。

OnTouchListener():当用户触摸屏幕上的任何UI元素(如按下或者释放按钮)时调用此方法。OnTouch()事件处理程序用于处理此侦听器。

OnMenuItemClickListener():当用户点击或者选择菜单时使用此方法item.OnMenuItemClick()事件处理程序用于处理此侦听器。

OnCreateContextMenuListener():OnCreateContextMenu()事件处理程序用于处理此侦听器。

事件处理实例

让我们开始创建一个如何在Android应用程序中使用事件处理程序和事件侦听器的示例。打开androidstudio并创建一个新项目。打开你的活动_主.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">

  <TextView
      android:id="@+id/tv_welcome"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Welcome to "
      android:textColor="@android:color/holo_red_dark"
      android:textSize="40dp"
      android:layout_centerVertical="true"
      android:layout_centerHorizontal="true" 

  <ImageButton
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageButton"
      android:src="@drawable/message"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="20dp" 

  <Button
      android:id="@+id/button"
      android:layout_width="150dp"
      android:layout_height="wrap_content"
      android:background="@android:color/holo_red_dark"
      android:text="Change Color"
      android:textColor="@android:color/background_light"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true"
      android:layout_marginBottom="70dp" 

  <TextView
      android:id="@+id/tv_java"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textColor="@android:color/holo_red_dark"
      android:textSize="40dp"
      android:layout_marginTop="21dp"
      android:text="Java Tutorial.net"
      android:layout_below="@+id/tv_welcome"
      android:layout_centerHorizontal="true" 

</RelativeLayout>

现在写代码主活动.java这里实现onClickListener(),当用户单击按钮时,文本的颜色将发生变化。最初文本的颜色是红色,第一次单击颜色将变为黑色,第二次单击时颜色将变为绿色,依此类推。这是密码

package com.example.admin.androideventhandling;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

  TextView welcome;
  TextView java;
  Button button;
  int i=0;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      welcome = (TextView)findViewById(R.id.tv_welcome);
      java = (TextView)findViewById(R.id.tv_java);
      button = (Button) findViewById(R.id.button);

      button.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              if(i==0) {
                  welcome.setTextColor(Color.BLACK);
                  java.setTextColor(Color.BLACK);
                  button.setBackgroundColor(Color.BLACK);
              }
              if(i==1) {
                  welcome.setTextColor(Color.GREEN);
                  java.setTextColor(Color.GREEN);
                  button.setBackgroundColor(Color.GREEN);
              }
              if(i==2) {
                  welcome.setTextColor(Color.BLUE);
                  java.setTextColor(Color.BLUE);
                  button.setBackgroundColor(Color.BLUE);
              }
              if(i==3) {
                  welcome.setTextColor(Color.MAGENTA);
                  java.setTextColor(Color.MAGENTA);
                  button.setBackgroundColor(Color.MAGENTA);
                  i=0;
              }
              i++;
          }
      });
  }

}