Android的事件处理机制详解(一)-----基于监听的事件处理机制

本文详细介绍了Android的基于监听的事件处理机制,包括事件源、事件、事件监听器三类对象组成,以及设置监听器的五种方式:匿名内部类、内部类、外部类、Activity本身和绑定到标签。还深入解析了OnTouchEvent事件,阐述了其方法声明、使用流程和返回值影响的调用顺序,并给出了MoveTo方法的使用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们开发的app更多的时候是需要与用户的交互----即对用户的操作进行响应

这就涉及到了android的事件处理机制;

android给我们提供了两套功能强大的处理机制:

①基于监听的事件处理机制

②基于回调的事件处理机制

在这一节中,我们会先介绍一下基于监听的事件处理机制

好了,废话不多说!



我们要先了解一下监听处理机制的模型


监听的处理模型:

处理模型图:




文字表述:

事件监听机制中由事件源,事件,事件监听器三类对象组成

处理流程:

step 1:为某个事件源(组件)设置一个监听器,用于监听用户操作

step 2:用户的操作,触发了事件源的监听器

step 3:生成了对应的事件对象

step 4:将这个事件源对象作为参数传给事件监听器

step 5:事件监听器对事件对象进行判断,执行对应的事件处理器(对应事件的处理方法)


归纳:

事件监听机制是一种委派式的事件处理机制,事件源(组件)事件处理委托给事件监听器

当事件源发生制定事件时,就通知事件监听器,执行相应的操作



使用形式:


实例:

这里实现的是点击按钮后,显示toast信息提示

为了演示,以下是用不同的形式实现如图的效果,可仔细揣摩代码


效果图:




①直接使用匿名内部类,作为事件监听器

ps:就是我们平时最常用的那种,setXxxListener后就重写里面的对应方法

通常都是临时使用一次,复用性不高



代码:

xml就是一个普通的按钮,这就不给出了

MainActivity.java


[java]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.jay.example.innerlisten;  
  2.   
  3. import android.os.Bundle;  
  4. import android.view.View;  
  5. import android.view.View.OnClickListener;  
  6. import android.widget.Button;  
  7. import android.widget.Toast;  
  8. import android.app.Activity;  
  9.   
  10.   
  11. public class MainActivity extends Activity {  
  12.   
  13.     private Button btnshow;  
  14.       
  15.     @Override  
  16.     protected void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.activity_main);  
  19.           
  20.         btnshow = (Button) findViewById(R.id.btnshow);  
  21.         btnshow.setOnClickListener(new OnClickListener() {  
  22.             //重写点击事件的处理方法onClick()  
  23.             @Override  
  24.             public void onClick(View v) {  
  25.                 //显示Toast信息  
  26.                 Toast.makeText(getApplicationContext(), "你点击了按钮", Toast.LENGTH_SHORT).show();  
  27.             }  
  28.         });  
  29.     }      
  30. }  


②使用内部类作为事件监听器

这里和上面的匿名内部类不一样的哦

使用优点:可以在该类中复用,可直接访问外部类的所有界面组件


代码:

[java]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. package
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值