我们已经练习了不少view了,在button介绍一文中,我们介绍了button事件的响应,然后在介绍其他view控件的时候,也介绍了不少响应这些控件的响应事件,看得出响应方法都是系统的一些回调函数在起作用,今天,我们在学习下Android虚拟键盘上下左右键按下和弹起的响应事件,由于代码简单,我就不再累赘的说明和交待了,看代码即可知用法。
动作一
创建EventsHandlerTest项目工程,这是我完成之后的目录:
动作二
在布局文件中,添加一个ListView控件,这个TestView主要是来显示和交待按键情况的,完整代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello" />
- <TextView
- android:id="@+id/display"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center" />
- </LinearLayout>
动作三
修改主要的代码,理解见注解:
- package org.ourunix.android.eventshandle;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.KeyEvent;
- import android.widget.TextView;
- public class EventsHandleActivity extends Activity {
- private TextView mTextView;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mTextView = (TextView) findViewById(R.id.display);
- }
- // 按键按下,所触发的事件
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_DPAD_CENTER:
- display("中键报道,被按下");
- break;
- case KeyEvent.KEYCODE_DPAD_DOWN:
- display("下键报道,被按下");
- break;
- case KeyEvent.KEYCODE_DPAD_LEFT:
- display("左键报道,被按下");
- break;
- case KeyEvent.KEYCODE_DPAD_RIGHT:
- display("右键报道,被按下");
- break;
- case KeyEvent.KEYCODE_DPAD_UP:
- display("上键报道,被按下");
- break;
- }
- return super.onKeyDown(keyCode, event);
- }
- // 按键弹起,所触发的事件
- public boolean onKeyUp(int keyCode, KeyEvent event) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_DPAD_CENTER:
- display("中键报道,被弹起");
- break;
- case KeyEvent.KEYCODE_DPAD_DOWN:
- display("下键报道,被弹起");
- break;
- case KeyEvent.KEYCODE_DPAD_LEFT:
- display("左键报道,被弹起");
- break;
- case KeyEvent.KEYCODE_DPAD_RIGHT:
- display("右键报道,被弹起");
- break;
- case KeyEvent.KEYCODE_DPAD_UP:
- display("上键报道,被弹起");
- break;
- }
- return super.onKeyUp(keyCode, event);
- }
- // 用来显示文本框内容
- public void display(String str) {
- mTextView.setText(str);
- }
- }
动作四
运行EventsHandlerTest,效果如下:
运行程序,未按键
按上键
离开上键,其他类似