android中的事件处理有两种:
基于监听的、基于回调的。
基于监听的:
为UI组件绑定事件监听器
事件监听器绑定到事件源(UI组件)–>外部动作–>事件源(UI组件)
–>事件–>事件监听器处理
根据上面的流程,可以分离出三个对象:
事件监听器、事件源、事件
关于“基于监听的”举个简单的例子就是:按钮的点击事件监听
基于回调的:
方式就是重写:
比如重写android组件的回调方法
比如重写activity的回调方法
举例:
public class TestActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {System.out.println(\"按下了按键\");return super.onKeyDown(keyCode, event);}}
一般来说,基于回调的方式,用来处理一些通用的时间;
特定的某些情况下,比如某些UI组件的事件处理,就用基于监听的
利用回调监听物理按键的时候,android为每一个按键都定义了一个int常量,只需判断其
KeyCode是不是等于按键对应的常量即可。
比如“返回键”的常量是:KEYCODE_BACK
在activity的onKeyDown回调方法中,通过if判断其参数keyCode==KEYCODE_BACK就知道
当前是否按下的是“返回键”
正常情况下,当你点击屏幕会触发两个监听:触摸监听和点击监听。
但是触摸监听的事件处理方法是有一个布尔类型的返回值的,这个返回值的意义就是:
是否完全消耗这个交互
当返回的是true的时候,代表触摸这个动作已经完全消耗这个交互了,所以点击这个动作
您就歇着吧,就不会再去执行点击监听。
当返回的是false,还会继续去执行点击的监听。