先举一个alt+q的例子
当键松开时触发关闭事件
@Override
public boolean dispatchKeyEvent(KeyEvent event){
int keyCode = event.getKeyCode();
if(event.isAltPressed() && keyCode == KeyEvent.KEYCODE_Q && event.getAction() == KeyEvent.ACTION_UP){//alt+q to exit item
Log.d(TAG, "ALT+Q is pressed, exit test item");
finish();
return true;
}
return false;
}
在android 中有现成的API来判断ALT是否被按下,SHIFT键也有现成的
那如果是一般的键呢,则要多加一个标志位来判断是否被按下了
下面就举一个a+q的
boolean aIsDown = flase;
@Override
public boolean dispatchKeyEvent(KeyEvent event){
int keyCode = event.getKeyCode();
if(keyCode ==KeyEvent.KEYCODE_A && event.getAction() ==KeyEvent.ACTION_DOWN){
if(!aIsDown){
aIsDown = true;
}
return true;
} else if(keyCode ==KeyEvent.KEYCODE_Q && event.getAction() ==KeyEvent.ACTION_UP){//a+q to exit item
Log.d(TAG, "A+Q is pressed, exit test item");
aIsDown = false;
finish();
return true;
}
return false;
}
转自:
http://blog.youkuaiyun.com/wenlibin1985/article/details/5579359
当键松开时触发关闭事件
@Override
public boolean dispatchKeyEvent(KeyEvent event){
int keyCode = event.getKeyCode();
if(event.isAltPressed() && keyCode == KeyEvent.KEYCODE_Q && event.getAction() == KeyEvent.ACTION_UP){//alt+q to exit item
Log.d(TAG, "ALT+Q is pressed, exit test item");
finish();
return true;
}
return false;
}
在android 中有现成的API来判断ALT是否被按下,SHIFT键也有现成的
那如果是一般的键呢,则要多加一个标志位来判断是否被按下了
下面就举一个a+q的
boolean aIsDown = flase;
@Override
public boolean dispatchKeyEvent(KeyEvent event){
int keyCode = event.getKeyCode();
if(keyCode ==KeyEvent.KEYCODE_A && event.getAction() ==KeyEvent.ACTION_DOWN){
if(!aIsDown){
aIsDown = true;
}
return true;
} else if(keyCode ==KeyEvent.KEYCODE_Q && event.getAction() ==KeyEvent.ACTION_UP){//a+q to exit item
Log.d(TAG, "A+Q is pressed, exit test item");
aIsDown = false;
finish();
return true;
}
return false;
}
转自:
http://blog.youkuaiyun.com/wenlibin1985/article/details/5579359
注:以上代码运行时会屏蔽掉其他按键(除了home键),将红色代码修改为:super.dispatchKeyEvent(event),屏蔽其他按键的问题即可解决!