嗨,大家好我最近一直在使用android,直到现在还没事。
当我想处理按键事件时,我只是在我的活动中覆盖onKeyDown方法。与关键事件相同。
问题是,这只适用于单个键,如果我同时按下键,只需处理一个键。
例如:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
boolean returnValue = super.onKeyDown(keyCode, event);
switch(keyCode){
case KeyEvent.KEYCODE_A:
//Do something awesome here
return true;
case KeyEvent.KEYCODE_C:
//Do something even more awesome here
return true;
}
return returnValue;
}
如果我同时按下“A”和“C”,则首先处理一个。
我的第一个想法是使用onKeyDown事件设置标志以跟踪按下哪些键并使用onKeyUp事件清除标志,但是当我在活动之间切换时这会失败。
现在我想要的是以下内容:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
boolean returnValue = super.onKeyDown(keyCode, event);
switch(keyCode){
case KeyEvent.KEYCODE_A:
if(/* C is pressed */){
//Do something not so awesome here
}
else{
//Do something awesome here
}
return true;
case KeyEvent.KEYCODE_C:
if(/* A is pressed */){
//Do something not so awesome here
}
else{
//Do something even more awesome here
}
return true;
}
return returnValue;
}
答案 0 :(得分:2)
问题是,这只适用于单个键,如果我同时按下键,只需处理一个键。
这是因为除了标准的“元”键(例如,移位)之外,Android不支持多个同时按键。
答案 1 :(得分:1)
多次按键检测通常由硬件限制决定。许多键盘是使用矩阵方法设计的,因此并不总是能够唯一地检测到按下的键。
如果您使用的设备会检测到多个按键,您可以尝试将您的keydown标记存储在静态区域或可以在活动之间传递的对象中。
但请记住,最终,您的解决方案的有效性将受到硬件键盘实现的限制。