转自:http://czy584521.iteye.com/blog/1062808
在android中重写父类的onkeydown方法,就可以更方便的操作了。
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- // TODO Auto-generated method stub
- if(keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0){
- //需要处理
- }
- return false;
- }
长按事件
- @Override
- public boolean onKeyLongPress(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_CALL) {
- // a long press of the call key.
- // do our work, returning true to consume it. by
- // returning true, the framework knows an action has
- // been performed on the long press, so will set the
- // canceled flag for the following up event.
- return true;
- }
- return super.onKeyLongPress(keyCode, event);
- }
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_CALL) {
// a long press of the call key.
// do our work, returning true to consume it. by
// returning true, the framework knows an action has
// been performed on the long press, so will set the
// canceled flag for the following up event.
return true;
}
return super.onKeyLongPress(keyCode, event);
}
- @Override
- public boolean onKeyUp(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_CALL && event.isTracking()
- && !event.isCanceled()) {
- // if the call key is being released, AND we are tracking
- // it from an initial key down, AND it is not canceled,
- // then handle it.
- return true;
- }
- return super.onKeyUp(keyCode, event);
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_0) {
- // this tells the framework to start tracking for
- // a long press and eventual key up. it will only
- // do so if this is the first down (not a repeat).
- event.startTracking();
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
- if (event.getAction() == KeyEvent.ACTION_DOWN
- && event.getRepeatCount() == 0) {
- // Tell the framework to start tracking this event.
- getKeyDispatcherState().startTracking(event, this);
- return true;
- } else if (event.getAction() == KeyEvent.ACTION_UP) {
- getKeyDispatcherState().handleUpEvent(event);
- if (event.isTracking() && !event.isCanceled()) {
- // DO BACK ACTION HERE
- return true;
- }
- }
- return super.dispatchKeyEvent(event);
- } else {
- return super.dispatchKeyEvent(event);
- }
- }