函数原型:
public boolean onKeyDown(int keyCode, KeyEvent event);
第一个参数是用户按下键时,当前所接收到的按键代号;
第二个参数是按键事件的对象。
使用方法:
如果要使用这个方法。直接在主 acivity 中重写即可,一般使用开关语句 switch 来把keyCode 和 (event.按键类型) 对比来执行对应的操作。
下面我们来看下event 的按键属性都有哪些。
在上面的函数中,按住control 加 鼠标左键点击 KeyEvent,就可以点进去看到很多东西。
1 public class KeyEvent extends InputEvent implements Parcelable {
2 /** Key code constant: Unknown key code. */
3 public static final int KEYCODE_UNKNOWN = 0;
4 /** Key code constant: Soft Left key.
5 * Usually situated below the display on phones and used as a multi-function
6 * feature key for selecting a software defined function shown on the bottom left
7 * of the display. */
8 public static final int KEYCODE_SOFT_LEFT = 1;
9 /** Key code constant: Soft Right key.
10 * Usually situated below the display on phones and used as a multi-function
11 * feature key for selecting a software defined function shown on the bottom right
12 * of the display. */
13 public static final int KEYCODE_SOFT_RIGHT = 2;
14 /** Key code constant: Home key.
15 * This key is handled by the framework and is never delivered to applications. */
16 public static final int KEYCODE_HOME = 3;
17 /** Key code constant: Back key. */
18 public static final int KEYCODE_BACK = 4;
19 /** Key code constant: Call key. */
20 public static final int KEYCODE_CALL = 5;
21 /** Key code constant: End Call key. */
22 public static final int KEYCODE_ENDCALL = 6;
23 /** Key code constant: '0' key. */
24 public static final int KEYCODE_0 = 7;
25 /** Key code constant: '1' key. */
26 public static final int KEYCODE_1 = 8;
27 /** Key code constant: '2' key. */
28 public static final int KEYCODE_2 = 9;
29 /** Key code constant: '3' key. */
30 public static final int KEYCODE_3 = 10;
31 /** Key code constant: '4' key. */
32 public static final int KEYCODE_4 = 11;
33 /** Key code constant: '5' key. */
34 public static final int KEYCODE_5 = 12;
35 /** Key code constant: '6' key. */
36 public static final int KEYCODE_6 = 13;
37 /** Key code constant: '7' key. */
38 public static final int KEYCODE_7 = 14;
39 /** Key code constant: '8' key. */
40 public static final int KEYCODE_8 = 15;
41 /** Key code constant: '9' key. */
42 public static final int KEYCODE_9 = 16;
43 /** Key code constant: '*' key. */
44 public static final int KEYCODE_STAR = 17;
45 /** Key code constant: '#' key. */
46 public static final int KEYCODE_POUND = 18;
47 /** Key code constant: Directional Pad Up key.
48 * May also be synthesized from trackball motions. */
49 public static final int KEYCODE_DPAD_UP = 19;
50 /** Key code constant: Directional Pad Down key.
51 * May also be synthesized from trackball motions. */
52 public static final int KEYCODE_DPAD_DOWN = 20;
53 /** Key code constant: Directional Pad Left key.
54 * May also be synthesized from trackball motions. */
55 public static final int KEYCODE_DPAD_LEFT = 21;
56 /** Key code constant: Directional Pad Right key.
57 * May also be synthesized from trackball motions. */
58 public static final int KEYCODE_DPAD_RIGHT = 22;
59 /** Key code constant: Directional Pad Center key.
60 * May also be synthesized from trackball motions. */
61 public static final int KEYCODE_DPAD_CENTER = 23;
62 /** Key code constant: Volume Up key.
63 * Adjusts the speaker volume up. */
64 public static final int KEYCODE_VOLUME_UP = 24;
65 /** Key code constant: Volume Down key.
66 * Adjusts the speaker volume down. */
67 public static final int KEYCODE_VOLUME_DOWN = 25;
68 /** Key code constant: Power key. */
69 public static final int KEYCODE_POWER = 26;
70 /** Key code constant: Camera key.
71 * Used to launch a camera application or take pictures. */
72 public static final int KEYCODE_CAMERA = 27;
73 /** Key code constant: Clear key. */
74 public static final int KEYCODE_CLEAR = 28;
75 /** Key code constant: 'A' key. */
76 public static final int KEYCODE_A = 29;
77 /** Key code constant: 'B' key. */
78 public static final int KEYCODE_B = 30;
79 /** Key code constant: 'C' key. */
80 public static final int KEYCODE_C = 31;
81 /** Key code constant: 'D' key. */
82 public static final int KEYCODE_D = 32;
83 /** Key code constant: 'E' key. */
84 public static final int KEYCODE_E = 33;
85 /** Key code constant: 'F' key. */
86 public static final int KEYCODE_F = 34;
87 /** Key code constant: 'G' key. */
88 public static final int KEYCODE_G = 35;
89 /** Key code constant: 'H' key. */
90 public static final int KEYCODE_H = 36;
91 /** Key code constant: 'I' key. */
92 public static final int KEYCODE_I = 37;
93 /** Key code constant: 'J' key. */
94 public static final int KEYCODE_J = 38;
95 /** Key code constant: 'K' key. */
96 public static final int KEYCODE_K = 39;
97 /** Key code constant: 'L' key. */
98 public static final int KEYCODE_L = 40;
99 /** Key code constant: 'M' key. */
100 public static final int KEYCODE_M = 41;
101 /** Key code constant: 'N' key. */
102 public static final int KEYCODE_N = 42;
103 /** Key code constant: 'O' key. */
104 public static final int KEYCODE_O = 43;
105 /** Key code constant: 'P' key. */
106 public static final int KEYCODE_P = 44;
107 /** Key code constant: 'Q' key. */
108 public static final int KEYCODE_Q = 45;
109 /** Key code constant: 'R' key. */
110 public static final int KEYCODE_R = 46;
111 /** Key code constant: 'S' key. */
112 public static final int KEYCODE_S = 47;
113 /** Key code constant: 'T' key. */
114 public static final int KEYCODE_T = 48;
115 /** Key code constant: 'U' key. */
116 public static final int KEYCODE_U = 49;
117 /** Key code constant: 'V' key. */
118 public static final int KEYCODE_V = 50;
119 /** Key code constant: 'W' key. */
120 public static final int KEYCODE_W = 51;
121 /** Key code constant: 'X' key. */
122 public static final int KEYCODE_X = 52;
123 /** Key code constant: 'Y' key. */
124 public static final int KEYCODE_Y = 53;
125 /** Key code constant: 'Z' key. */
126 public static final int KEYCODE_Z = 54;
127 /** Key code constant: ',' key. */
128 public static final int KEYCODE_COMMA = 55;
129 /** Key code constant: '.' key. */
130 public static final int KEYCODE_PERIOD = 56;
131 /** Key code constant: Left Alt modifier key. */
132 public static final int KEYCODE_ALT_LEFT = 57;
133 /** Key code constant: Right Alt modifier key. */
134 public static final int KEYCODE_ALT_RIGHT = 58;
135 /** Key code constant: Left Shift modifier key. */
136 public static final int KEYCODE_SHIFT_LEFT = 59;
137 /** Key code constant: Right Shift modifier key. */
138 public static final int KEYCODE_SHIFT_RIGHT = 60;
139 /** Key code constant: Tab key. */
140 public static final int KEYCODE_TAB = 61;
141 /** Key code constant: Space key. */
142 public static final int KEYCODE_SPACE = 62;
143 /** Key code constant: Symbol modifier key.
144 * Used to enter alternate symbols. */
145 public static final int KEYCODE_SYM = 63;
146 /** Key code constant: Explorer special function key.
147 * Used to launch a browser application. */
148 public static final int KEYCODE_EXPLORER = 64;
149 /** Key code constant: Envelope special function key.
150 * Used to launch a mail application. */
151 public static final int KEYCODE_ENVELOPE = 65;
152 /** Key code constant: Enter key. */
153 public static final int KEYCODE_ENTER = 66;
154 /** Key code constant: Backspace key.
155 * Deletes characters before the insertion point, unlike {@link #KEYCODE_FORWARD_DEL}. */
156 public static final int KEYCODE_DEL = 67;
157 /** Key code constant: '`' (backtick) key. */
158 public static final int KEYCODE_GRAVE = 68;
159 /** Key code constant: '-'. */
160 public static final int KEYCODE_MINUS = 69;
161 /** Key code constant: '=' key. */
162 public static final int KEYCODE_EQUALS = 70;
163 /** Key code constant: '[' key. */
164 public static final int KEYCODE_LEFT_BRACKET = 71;
165 /** Key code constant: ']' key. */
166 public static final int KEYCODE_RIGHT_BRACKET = 72;
167 .
168 .
169 .
170 .
171 .
172 下面还很多...
根据英语的提示,我们可以很容易地识别出,这些按键的类型,下面举个例子;
1 @Override
2 2 public boolean onKeyDown(int keyCode, KeyEvent event) {
3 3 // TODO Auto-generated method stub
4 4
5 5 if(keyCode==KeyEvent.KEYCODE_BACK){//back,返回键
6 6 Toast.makeText(this,"你按了返回键",LENGTH_LONG).show();
7 33 }
8 35 return super.onKeyDown(keyCode, event);
9 36 }
上面是简单的一个按键时间。一般要处理很多事件的时候,用 switch - case
1 @Override
2 public boolean onKeyDown(int keyCode, KeyEvent event) {
3 // TODO Auto-generated method stub
4 if(event.getRepeatCount()==0) {//限制重复次数,防止用户过多点击
5 switch(keyCode) {
6 case KeyEvent.KEYCODE_SEARCH:
7
8 break;
9 case KeyEvent.KEYCODE_CAMERA:
10
11 break;
12 case KeyEvent.KEYCODE_DPAD_CENTER:
13
14 break;
15
16 default:
17 break;
18 }
19 }
20 return super.onKeyDown(keyCode, event);
21 }