关于Android按键处理
2011-10-20 16:55
483 查看
在dispatchKeyEvent(KeyEvent event)中按键的按下抬起都会进行操作,在处理完一个按键操作时无论return true 还是 false ,onKeyDown(int keyCode, KeyEvent event)和onKeyUp(int keyCode, KeyEvent event)都不会再进行按键处理:
log信息:
D/ testMainActivity ( 853): dispatchKeyEvent 1 key = 23 event = 0
D/ testMainActivity ( 853): dispatchKeyEvent 2 ACTION_DOWN23
D/ testMainActivity ( 853): onKeyDown 23
D/ testMainActivity ( 853): dispatchKeyEvent 1 key = 23 event = 1
D/ testMainActivity ( 853): dispatchKeyEvent 3 ACTION_UP23
D/ testMainActivity ( 853): onKeyUp 23
log信息:
D/ testMainActivity ( 711): dispatchKeyEvent 1 key = 23 event = 0
D/ testMainActivity ( 711): dispatchKeyEvent 2 ACTION_DOWN23
D/ testMainActivity ( 711): dispatchKeyEvent 1 key = 23 event = 1
D/ testMainActivity ( 711): dispatchKeyEvent 3 ACTION_UP23
综上所述:Android系统按键操作最先是在dispatchKeyEvent中进行处理的,然后才是onKeyDown(int keyCode, KeyEvent event)和onKeyUp(int keyCode, KeyEvent event)。
1、第一种情况及log信息:
public void DEBUG(String str) { Log.d(TAG, str); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub DEBUG(" onKeyDown " + keyCode ); return super.onKeyDown(keyCode, event); } @Override public boolean onKeyLongPress(int keyCode, KeyEvent event) { // TODO Auto-generated method stub DEBUG(" onKeyLongPress " + keyCode ); return super.onKeyLongPress(keyCode, event); } @Override public boolean dispatchKeyEvent(KeyEvent event) { // TODO Auto-generated method stub DEBUG(" dispatchKeyEvent 1 key = " + event.getKeyCode() + " event = " + event.getAction()); if(event.getAction()==KeyEvent.ACTION_DOWN){ DEBUG(" dispatchKeyEvent 2 ACTION_DOWN" + event.getKeyCode() ); return super.dispatchKeyEvent(event); } if(event.getAction()==KeyEvent.ACTION_UP){ DEBUG(" dispatchKeyEvent 3 ACTION_UP" + event.getKeyCode() ); return super.dispatchKeyEvent(event); } return super.dispatchKeyEvent(event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { // TODO Auto-generated method stub DEBUG(" onKeyUp " + keyCode); return super.onKeyUp(keyCode, event); }
log信息:
D/ testMainActivity ( 853): dispatchKeyEvent 1 key = 23 event = 0
D/ testMainActivity ( 853): dispatchKeyEvent 2 ACTION_DOWN23
D/ testMainActivity ( 853): onKeyDown 23
D/ testMainActivity ( 853): dispatchKeyEvent 1 key = 23 event = 1
D/ testMainActivity ( 853): dispatchKeyEvent 3 ACTION_UP23
D/ testMainActivity ( 853): onKeyUp 23
2、第二种情况及log信息:
public void DEBUG(String str) { Log.d(TAG, str); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub DEBUG(" onKeyDown " + keyCode ); return super.onKeyDown(keyCode, event); } @Override public boolean onKeyLongPress(int keyCode, KeyEvent event) { // TODO Auto-generated method stub DEBUG(" onKeyLongPress " + keyCode ); return super.onKeyLongPress(keyCode, event); } @Override public boolean dispatchKeyEvent(KeyEvent event) { // TODO Auto-generated method stub DEBUG(" dispatchKeyEvent 1 key = " + event.getKeyCode() + " event = " + event.getAction()); if(event.getAction()==KeyEvent.ACTION_DOWN){ DEBUG(" dispatchKeyEvent 2 ACTION_DOWN" + event.getKeyCode() ); return true; } if(event.getAction()==KeyEvent.ACTION_UP){ DEBUG(" dispatchKeyEvent 3 ACTION_UP" + event.getKeyCode() ); return false; } return super.dispatchKeyEvent(event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { // TODO Auto-generated method stub DEBUG(" onKeyUp " + keyCode); return super.onKeyUp(keyCode, event); }
log信息:
D/ testMainActivity ( 711): dispatchKeyEvent 1 key = 23 event = 0
D/ testMainActivity ( 711): dispatchKeyEvent 2 ACTION_DOWN23
D/ testMainActivity ( 711): dispatchKeyEvent 1 key = 23 event = 1
D/ testMainActivity ( 711): dispatchKeyEvent 3 ACTION_UP23
综上所述:Android系统按键操作最先是在dispatchKeyEvent中进行处理的,然后才是onKeyDown(int keyCode, KeyEvent event)和onKeyUp(int keyCode, KeyEvent event)。
相关文章推荐
- android launcher开发(8)按键的处理
- android 按键处理流程
- Android 关于处理手机屏幕自适应时,用到的主要方法
- 关于android的9path图片处理
- Android游戏中的按键处理解决方案
- android 关于破损图片判断,处理
- 关于android新的开发工具android_studio的下载和问题处理
- android PopupWindow关于返回按键的判断
- Android-IM即时通讯关于消息撤回的处理
- android中关于图片的处理和显示
- Android事件处理--按键
- 【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!
- Android 按键消息处理
- 关于Android中50M+的文本入库处理细节
- 关于Android“This Handler class should be static or leaks might occur”警告的处理方法
- 关于android各种双卡手机获取imei,imsi的处理(mtk,展讯,高通等)
- Android-4.0.4 添加触摸屏按键处理及java中使用重定位命令
- Android 功能自动化测试关于关键盘弹出的处理
- 关于android调用相机及拍照的存储和照片处理功能的全面小案例
- 关于android视频播放显示区域不正常的问题,一些处理方法