Android学习笔记(36):Android的两种事件处理方式

简介:

Android提供了两种事件处理的方式:基于回调的事件处理 和 基于监听的事件处理。

 

我们来说的容易理解一点:

1)基于回调的事件处理就是继承GUI组件,并重写该组件的事件处理方法。除了一些特定的情况,大部分情况使用基于回调的事件处理方式并不是最好的选择。

2)基于监听的事件处理就是在监听器中定义事件的处理方式,再为组件绑定监听器。这种方式无疑是更能够体现面向对象思想的。

 

基于回调的事件处理:

 

View类包含如下的方法可以用于重写:

boolean onKeyDown(int keyCode,KeyEvent event):按下某个按键时触发

boolean onKeyUp(int keyCode,KeyEvent event):松开某个按键时触发

boolean onKeyLongPress(int keyCode,KeyEvent event):长按某个按键时触发

boolean onKeyShortcut(int keyCode,KeyEvent event):按下某个快捷键时触发

boolean onTouchEvent(MotionEvent event):触摸屏幕时触发

 

我们注意到返回值都是一个boolean值,这用于标识该方法能否完全处理该事件。返回true表示能完全处理,事件不会传播出去,返回false表示不能完全处理,事件会传播出去。交给下面的事件处理方法处理。


 

基于监听的事件处理:

 

这是一种委派式的事件处理方式:普通组件(事件源)将事件处理委托给(绑定)事件监听器,事件源发生指定的事件时,通知事件监听器来处理该事件。

 

下图展示的是基于监听的事件处理流程图:


了解下下面这几种概念:

事件源:就是各种GUI组件。

事件监听器:各种XxxListener类,需要实现事件处理方法的接口。

注册监听器:调用事件源的setXxxListener(XxxListener)方法。

 

View包含如下几个内部接口:

View.OnClickListener:处理单击事件

View.OnCreateContextMenuListener:处理单击上下文菜单项的事件

View.onFocusChangeListener:处理焦点改变事件

View.OnKeyListener:处理按键事件

View.OnLongClickListener:处理长按事件

View.OnTouchListener:处理触摸事件

 

一个事件监听器可以被多个GUI组件所共用。

 

实现事件监听器可以有如下几种形式:

内部类、外部类、Activity本身实现,匿名内部类、直接绑定到标签(这是特殊但很方便的形式)。

 

这各种实现如果熟悉Java的话,实现都是不难的。

目录
相关文章
|
2月前
|
Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
2月前
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
Android面试高频知识点(1) 图解 Android 事件分发机制
40 1
|
2月前
|
XML 前端开发 Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
2月前
|
Android开发
Android 事件分发机制详细解读
Android 事件分发机制详细解读
42 5
|
4月前
|
图形学 Android开发
小功能⭐️Unity调用Android常用事件
小功能⭐️Unity调用Android常用事件
|
4月前
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。
202 9
|
4月前
|
开发工具 Android开发
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
43 0
|
6月前
|
XML Android开发 数据格式
37. 【Android教程】基于监听的事件处理机制
37. 【Android教程】基于监听的事件处理机制
85 2
|
7月前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
|
7月前
|
消息中间件 缓存 架构师
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍