关于按键的响应
来源:互联网 发布:tc编程 编辑:程序博客网 时间:2024/05/17 23:42
一般的按键响应的拦截时重载一个onkeydown就可以了,像menu键之类的,onkeydown分为activity级别和view级别的,view级别只有在activity不响应而且view被聚焦的时候响应,但是search和音量钮之类的比较特别了,需要别的拦截的方式的,search好像有个onsearchRequested(),
//重载放大镜调用
public boolean onSearchRequested() {
//TODO
return true;
}
回到主题,像音量钮值的要在dispatchkeyevent的时候进行拦截,这样,那个系统的音量提示框就不会出现了,
@Overridepublic boolean dispatchKeyEvent(KeyEvent event) { int action = event.getAction(); int keyCode = event.getKeyCode(); switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: if (action == KeyEvent.ACTION_UP) { //TODO } return true; case KeyEvent.KEYCODE_VOLUME_DOWN: if (action == KeyEvent.ACTION_UP) { //TODO } return true; default: return super.dispatchKeyEvent(event); } }
后来发现弹出自己的dialog之后,音量钮的事件就接受不到了,原来被DialogInterface.OnKeyListener给没收了,所以要给自己的dialogsetkeylistener来继续处理事件(突然想起来dialog和activity是在同一个包下面的,而不是view在同一个包下面,有空要详细看看)
有些时候我们需要模拟一些按键的响应,可以直接调用onkeydown(keycode, keyevent),
还有一个方法是使用Instrumentation ,注意的是下面这两句不能再主线程中不调用
Instrumentation i = new Instrumentation();
i.sendKeyDownUpSync(KeyEvent.KEYCODE_A);
引用了的些资料来源于
http://stackoverflow.com/questions/2874743/android-volume-buttons-used-in-my-application
http://stackoverflow.com/questions/3830273/override-volume-key-in-android-in-pop-up-menus-notifications
- 关于按键的响应
- 关于QT的按键消息响应
- 一个关于NGUI的点击和按键响应的Bug
- 关于浏览器响应鼠标各个按键的问题
- CMFCRibbonEdit的按键消息响应
- 关于程序响应 HOME 及 BACK 按键
- 关于Android中物理按键不响应的可能的一个问题。
- 关于一个view焦点转移时响应按键事件的问题
- jQuery按键响应事件keypress对应的按键编码keycode
- 多个WebBrowser的按键响应
- 屏蔽控件对按键消息的响应
- VC++中单个键盘按键的响应
- 设置对话框响应键盘的按键
- android按键的三种响应方式
- JS屏蔽页面某些按键的响应
- 如何屏蔽控件的按键响应
- matlab中figure对象的按键响应
- 响应键盘按键
- 冒泡排序
- 存储过程案例
- 神马是哭笑不得?
- 数据结构的使用和学习
- Jquery快速学习
- 关于按键的响应
- jsp+mysql
- 积分
- [转]UML中数据流图,用例图,类图,对象图,角色图,活动图,序列图
- WindowsXP启动过程
- 使位图透明
- 如何在IIS中部署和注册WCF服务(转)
- [一种声音]硅谷的大鸟
- NetCat代码分析