
2.2 键盘事件
2.1节的内容主要为读者介绍了UI控件基于监听机制的事件响应方法,这些响应方法也是Android UI最常见的响应方法。读者掌握了这些响应方法就已经基本掌握了如何对操作Android UI执行响应了。但是,有时候用户也需要直接操作Android手机上的键盘,这个时候就需要直接对键盘事件进行响应了。本节将介绍基于回调机制的键盘事件的响应方法。

上面的XML界面文件非常简单,在一个线性布局里添加了一个TextView控件,用来在后面显示文本。接下来的程序代码控制用户按下键盘上的返回键,在界面输出文字。

上面的程序代码中,在Activity中重写了onKeyDown (int keyCode, KeyEvent event)方法,在该方法中,实现了键盘事件。参数keyCode为按键码,event表示按键事件,其中包含更详细的内容。在本例中,按键码keyCode==KeyEvent.KEYCODE_BACK表示用户按下的是返回键。该方法会在用户按下返回键时被回调,运行效果如图2.2所示。

图2.2 响应键盘事件
实际上,为了实现回调机制的事件处理,Android为所有GUI组件都提供了一些可重写的事件处理方法,以View为例,该类包含如下方法。
boolean onKeyDown(int keyCode, KeyEvent event):当用户在该组件上按下某个按键时触发该方法。
boolean onKeyLongPress(int keyCode, KeyEvent event):当用户在该组件上长按某个按键时触发该方法。
boolean onKeyShortcut(int keyCode, KeyEvent event):当一个键盘快捷键事件发生时触发该方法。
boolean onKeyUp(int keyCode, KeyEvent event):当用户在该组件上松开某个按键时触发该方法。
boolean onTouchEvent(int keyCode, KeyEvent event):当用户在该组件上触发触摸屏事件时触发该方法。
boolean onTrackballEvent(int keyCode, KeyEvent event):当用户在该组件上触发轨迹球事件时触发该方法。
上面的函数boolean onTouchEvent(int keyCode, KeyEvent event)为Android添加触摸屏事件时需要重写的方法。接下来介绍Android的触摸屏事件处理。