onKeyDown 方法一点归纳
2:参数keyCode ,这个参数是指我们手机键盘中的键盘码,我们手机中的按键都有对应着的键盘码,包括电源键,音量的+ ,- ,home 键等等。我们的返回键 的键盘码就是4。我们可以通过判断返回的key code 是什么数值来判断用户按下的是什么按键。
3:当用户按下按键时,系统会自动将事件封装成KeyEvent对象供应用程序使用。 按键事件KeyEvent 按键事件有多种常量类型,比如 KEYCODE_BACK ,
4:返回值,onKeyDown 方法的返回值是一个boolean,一开始我以为这个是跟view 的事件分发是一个道理的,返回true 事件由当前的activity 或者view 的onKeyDown()方法来处理,返回false 由上一级来处理,但是我测试了一下,发现不管返回ture 还是false ,如果在当前界面继续点击 返回键, onKeyDown() 方法依旧会捕获到。只有在返回super.onKeyDown(keyCode, event) 时,才会由当前activity 或者view 的父级来处理。然后再网上查资料接触到一个信息,是当返回true 的时候,之后你按了某些按键,比如keyCode 为82 的KEYCODE_MENU ,你就无法再接收到。
(这个只是我当时随便测了一下,所以仅仅供大家参考吧,但是返回false 就说事件不吃掉,让其他来处理,这个概论是觉得有疑问的。)
5:点击两次进行关闭的功能
private long clickTime=0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (SystemClock.uptimeMillis() - clickTime <= 1500) {
//如果两次的时间差<1s,就不执行操作
} else {
//当前系统时间的毫秒值
clickTime = SystemClock.uptimeMillis();
Toast.makeText(MainUI.this, "再次点击退出", Toast.LENGTH_SHORT).show();
return false;
}
}
return super.onKeyDown(keyCode, event);
}
——————————————————————————————>
private long clickTime=0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void exit() {
if ((System.currentTimeMillis() - clickTime) > 2000) {
Toast.makeText(getApplicationContext(), "再次点击退出", Toast.LENGTH_SHORT).show();
clickTime = System.currentTimeMillis();
} else {
Log.e(TAG, "exit application");
this.finish();
System.exit(0);
}
}
实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法。
判断用户两次按键的时间差是否在一个预期值之内,是的话直接直接退出,不是的话提示用户再按一次后退键退出。我们可以在这里进行一些操作,比如关闭掉所有缓存 的activity,或者将登陆状态改为下线等操作。
6:onBackPressed()
当活动检测到用户按下后退键时调用这个方法,这个方法是底层 activity 中的一个方法,他最终会调用activity 的finish() 方法用来关闭activity 。
7:键值对照表
KEYCODE列表
电话键
键名 描述 键值
KEYCODE_CALL 拨号键5
KEYCODE_ENDCALL 挂机键6
KEYCODE_HOME 按键Home3
KEYCODE_MENU 菜单键82
KEYCODE_BACK 返回键4
KEYCODE_SEARCH 搜索键84
KEYCODE_CAMERA 拍照键27
KEYCODE_FOCUS 拍照对焦键80
KEYCODE_POWER 电源键26
KEYCODE_NOTIFICATION 通知键83
KEYCODE_MUTE 话筒静音键91
KEYCODE_VOLUME_MUTE 扬声器静音键164
KEYCODE_VOLUME_UP 音量增加键24
KEYCODE_VOLUME_DOWN 音量减小键25
控制键
键名 描述 键值
KEYCODE_ENTER 回车键66
KEYCODE_ESCAPE ESC键111
KEYCODE_DPAD_CENTER 导航键 确定键23
KEYCODE_DPAD_UP 导航键 向上19
KEYCODE_DPAD_DOWN 导航键 向下20
KEYCODE_DPAD_LEFT 导航键 向左21
KEYCODE_DPAD_RIGHT 导航键 向右22
KEYCODE_MOVE_HOME 光标移动到开始键122
KEYCODE_MOVE_END 光标移动到末尾键123
KEYCODE_PAGE_UP 向上翻页键92
KEYCODE_PAGE_DOWN 向下翻页键93
KEYCODE_DEL 退格键67
KEYCODE_FORWARD_DEL 删除键112
KEYCODE_INSERT 插入键124
KEYCODE_TAB Tab键61
KEYCODE_NUM_LOCK 小键盘锁143
KEYCODE_CAPS_LOCK 大写锁定键115
KEYCODE_BREAK Break/Pause键121
KEYCODE_SCROLL_LOCK 滚动锁定键116
KEYCODE_ZOOM_IN 放大键168
KEYCODE_ZOOM_OUT 缩小键169
组合键
键名 描述
KEYCODE_ALT_LEFT Alt+Left
KEYCODE_ALT_RIGHT Alt+Right
KEYCODE_CTRL_LEFT Control+Left
KEYCODE_CTRL_RIGHT Control+Right
KEYCODE_SHIFT_LEFT Shift+Left
KEYCODE_SHIFT_RIGHT Shift+Right
基本
键名 描述 键值
KEYCODE_0 按键'0'7
KEYCODE_1 按键'1'8
KEYCODE_2 按键'2'9
KEYCODE_3 按键'3'10
KEYCODE_4 按键'4'11
KEYCODE_5 按键'5'12
KEYCODE_6 按键'6'13
KEYCODE_7 按键'7'14
KEYCODE_8 按键'8'15
KEYCODE_9 按键'9'16
KEYCODE_A 按键'A'29
KEYCODE_B 按键'B'30
KEYCODE_C 按键'C'31
KEYCODE_D 按键'D'32
KEYCODE_E 按键'E'33
KEYCODE_F 按键'F'34
KEYCODE_G 按键'G'35
KEYCODE_H 按键'H'36
KEYCODE_I 按键'I'37
KEYCODE_J 按键'J'38
KEYCODE_K 按键'K'39
KEYCODE_L 按键'L'40
KEYCODE_M 按键'M'41
KEYCODE_N 按键'N'42
KEYCODE_O 按键'O'43
KEYCODE_P 按键'P'44
KEYCODE_Q 按键'Q'45
KEYCODE_R 按键'R'46
KEYCODE_S 按键'S'47
KEYCODE_T 按键'T'48
KEYCODE_U 按键'U'49
KEYCODE_V 按键'V'50
KEYCODE_W 按键'W'51
KEYCODE_X 按键'X'52
KEYCODE_Y 按键'Y'53
KEYCODE_Z 按键'Z'54
符号
键名 描述
KEYCODE_PLUS 按键'+'
KEYCODE_MINUS 按键'-'
KEYCODE_STAR 按键'*'
KEYCODE_SLASH 按键'/'
KEYCODE_EQUALS 按键'='
KEYCODE_AT 按键'@'
KEYCODE_POUND 按键'#'
KEYCODE_APOSTROPHE 按键''' (单引号)
KEYCODE_BACKSLASH 按键'\'
KEYCODE_COMMA 按键','
KEYCODE_PERIOD 按键'.'
KEYCODE_LEFT_BRACKET 按键'['
KEYCODE_RIGHT_BRACKET 按键']'
KEYCODE_SEMICOLON 按键';'
KEYCODE_GRAVE 按键'`'
KEYCODE_SPACE 空格键
小键盘
键名 描述
KEYCODE_NUMPAD_0 小键盘按键'0'
KEYCODE_NUMPAD_1 小键盘按键'1'
KEYCODE_NUMPAD_2 小键盘按键'2'
KEYCODE_NUMPAD_3 小键盘按键'3'
KEYCODE_NUMPAD_4 小键盘按键'4'
KEYCODE_NUMPAD_5 小键盘按键'5'
KEYCODE_NUMPAD_6 小键盘按键'6'
KEYCODE_NUMPAD_7 小键盘按键'7'
KEYCODE_NUMPAD_8 小键盘按键'8'
KEYCODE_NUMPAD_9 小键盘按键'9'
KEYCODE_NUMPAD_ADD 小键盘按键'+'
KEYCODE_NUMPAD_SUBTRACT 小键盘按键'-'
KEYCODE_NUMPAD_MULTIPLY 小键盘按键'*'
KEYCODE_NUMPAD_DIVIDE 小键盘按键'/'
KEYCODE_NUMPAD_EQUALS 小键盘按键'='
KEYCODE_NUMPAD_COMMA 小键盘按键','
KEYCODE_NUMPAD_DOT 小键盘按键'.'
KEYCODE_NUMPAD_LEFT_PAREN 小键盘按键'('
KEYCODE_NUMPAD_RIGHT_PAREN 小键盘按键')'
KEYCODE_NUMPAD_ENTER 小键盘按键回车
功能键
键名 描述
KEYCODE_F1 按键F1
KEYCODE_F2 按键F2
KEYCODE_F3 按键F3
KEYCODE_F4 按键F4
KEYCODE_F5 按键F5
KEYCODE_F6 按键F6
KEYCODE_F7 按键F7
KEYCODE_F8 按键F8
KEYCODE_F9 按键F9
KEYCODE_F10 按键F10
KEYCODE_F11 按键F11
KEYCODE_F12 按键F12
多媒体键
键名 描述
KEYCODE_MEDIA_PLAY 多媒体键 播放
KEYCODE_MEDIA_STOP 多媒体键 停止
KEYCODE_MEDIA_PAUSE 多媒体键 暂停
KEYCODE_MEDIA_PLAY_PAUSE 多媒体键 播放/暂停
KEYCODE_MEDIA_FAST_FORWARD 多媒体键 快进
KEYCODE_MEDIA_REWIND 多媒体键 快退
KEYCODE_MEDIA_NEXT 多媒体键 下一首
KEYCODE_MEDIA_PREVIOUS 多媒体键 上一首
KEYCODE_MEDIA_CLOSE 多媒体键 关闭
KEYCODE_MEDIA_EJECT 多媒体键 弹出
KEYCODE_MEDIA_RECORD 多媒体键 录音
手柄按键
键名 描述
KEYCODE_BUTTON_1 通用游戏手柄按钮 #1
KEYCODE_BUTTON_2 通用游戏手柄按钮 #2
KEYCODE_BUTTON_3 通用游戏手柄按钮 #3
KEYCODE_BUTTON_4 通用游戏手柄按钮 #4
KEYCODE_BUTTON_5 通用游戏手柄按钮 #5
KEYCODE_BUTTON_6 通用游戏手柄按钮 #6
KEYCODE_BUTTON_7 通用游戏手柄按钮 #7
KEYCODE_BUTTON_8 通用游戏手柄按钮 #8
KEYCODE_BUTTON_9 通用游戏手柄按钮 #9
KEYCODE_BUTTON_10 通用游戏手柄按钮 #10
KEYCODE_BUTTON_11 通用游戏手柄按钮 #11
KEYCODE_BUTTON_12 通用游戏手柄按钮 #12
KEYCODE_BUTTON_13 通用游戏手柄按钮 #13
KEYCODE_BUTTON_14 通用游戏手柄按钮 #14
KEYCODE_BUTTON_15 通用游戏手柄按钮 #15
KEYCODE_BUTTON_16 通用游戏手柄按钮 #16
KEYCODE_BUTTON_A 游戏手柄按钮 A
KEYCODE_BUTTON_B 游戏手柄按钮 B
KEYCODE_BUTTON_C 游戏手柄按钮 C
KEYCODE_BUTTON_X 游戏手柄按钮 X
KEYCODE_BUTTON_Y 游戏手柄按钮 Y
KEYCODE_BUTTON_Z 游戏手柄按钮 Z
KEYCODE_BUTTON_L1 游戏手柄按钮 L1
KEYCODE_BUTTON_L2 游戏手柄按钮 L2
KEYCODE_BUTTON_R1 游戏手柄按钮 R1
KEYCODE_BUTTON_R2 游戏手柄按钮 R2
KEYCODE_BUTTON_MODE 游戏手柄按钮 Mode
KEYCODE_BUTTON_SELECT 游戏手柄按钮 Select
KEYCODE_BUTTON_START 游戏手柄按钮 Start
KEYCODE_BUTTON_THUMBL Left Thumb Button
KEYCODE_BUTTON_THUMBR Right Thumb Button
待查
键名 描述
KEYCODE_NUM 按键Number modifier
KEYCODE_INFO 按键Info
KEYCODE_APP_SWITCH 按键App switch
KEYCODE_BOOKMARK 按键Bookmark
KEYCODE_AVR_INPUT 按键A/V Receiver input
KEYCODE_AVR_POWER 按键A/V Receiver power
KEYCODE_CAPTIONS 按键Toggle captions
KEYCODE_CHANNEL_DOWN 按键Channel down
KEYCODE_CHANNEL_UP 按键Channel up
KEYCODE_CLEAR 按键Clear
KEYCODE_DVR 按键DVR
KEYCODE_ENVELOPE 按键Envelope special function
KEYCODE_EXPLORER 按键Explorer special function
KEYCODE_FORWARD 按键Forward
KEYCODE_FORWARD_DEL 按键Forward Delete
KEYCODE_FUNCTION 按键Function modifier
KEYCODE_GUIDE 按键Guide
KEYCODE_HEADSETHOOK 按键Headset Hook
KEYCODE_META_LEFT 按键Left Meta modifier
KEYCODE_META_RIGHT 按键Right Meta modifier
KEYCODE_PICTSYMBOLS 按键Picture Symbols modifier
KEYCODE_PROG_BLUE 按键Blue “programmable”
KEYCODE_PROG_GREEN 按键Green “programmable”
KEYCODE_PROG_RED 按键Red “programmable”
KEYCODE_PROG_YELLOW 按键Yellow “programmable”
KEYCODE_SETTINGS 按键Settings
KEYCODE_SOFT_LEFT 按键Soft Left
KEYCODE_SOFT_RIGHT 按键Soft Right
KEYCODE_STB_INPUT 按键Set-top-box input
KEYCODE_STB_POWER 按键Set-top-box power
KEYCODE_SWITCH_CHARSET 按键Switch Charset modifier
KEYCODE_SYM 按键Symbol modifier
KEYCODE_SYSRQ 按键System Request / Print Screen
KEYCODE_TV 按键TV
KEYCODE_TV_INPUT 按键TV input
KEYCODE_TV_POWER 按键TV power
KEYCODE_WINDOW 按键Window
KEYCODE_UNKNOWN 未知按键
参考了:
https://blog.csdn.net/chenrushui/article/details/51249836
https://blog.csdn.net/u012839224/article/details/37764193
onKeyDown 方法一点归纳相关推荐
- android onkeydown继承,onKeyDown方法中的返回值
今天调了一个非常蛋疼的bug,花了差不多一个小时的时间,在应用内的某个activity中不能使用设备的音量调节按钮调节音量,开始以为是因为window的某些flag导致的,试了试,貌似没有影响,后来又 ...
- linux磁盘信息文件,Linux查看硬盘信息方法总结归纳
Linux查看硬盘信息方法总结归纳 lsblk lsblk命令用来查看接入到系统中的块设备,默认输出分区.大小.挂载点等信息,一目了然: tlanyan@node1:~$ lsblk sda 8:0 ...
- 关于onKeyDown方法
onKeyDown方法简介 首先介绍的是onKeyDown方法,该方法是接口KeyEvent.Callback中的抽象方法,所有的View全部实现了该接口并重写了该方法,该方法用来捕捉手机键盘被按下的 ...
- onKeyDown方法笔记
onKeyDown()⽅法详解 onKeyDown()⽅法详解 当Android设备上的物理按键被按下的时候,程序会回调onKeyDown()⽅法,该⽅法是接⼝KeyEvent.Callback中的抽 ...
- eclipse报unknown database错误的其中一种方法解决归纳
今天我们分享的是unknown database 错误,如果是在用eclipse做项目的,或者是在学开发的同学在用这工具时应该都知道,这个eclipse每一次报错是都有一大堆的错误报错出来,其实最近, ...
- 求素数的方法完整归纳,学的不仅是“求素数”!
一.相关概念 定义:素数(Prime Number)又称质数,是指大于1且只能被1和它本身整除的正整数,例如2,3,5,7,11等. 与素数相对的就是合数,它能被一个本身之外的数整除,例如4,6,8, ...
- 关于HBITMAP,CBITMAP,BITMAP的转换以及图像显示的一点归纳
OK,在上一篇文章中我提到了VC6和VS的差别,在VC6中我们只能依赖于CBITMAP HBITMAP以及BITMAP之间的转化关系,而在VS中,我们用CIMAGE类就可以全部搞定,那么究竟这三个类之 ...
- Home键的获取监听,安卓4.0后就不能在onkeydown方法中获取了。怎么办。
Android下得到Home键按下的消息 在Android下,并不能通过onKeyDown这样的事件来截获Home键的消息,其原因在Android的文档中已经明确的说过了 public static ...
- 数据挖掘导论 复习一(介绍+数据预处理方法+定性归纳)
数据挖掘=数据库+机器学习 算法 经验 模型 机器学习任务:分类.回归.聚类(KMeans.DCSAN.层次聚类).数据降维.数据预处理 常用分类器:KNN.贝叶斯. 逻辑回归 .决策树.随机森林 本 ...
最新文章
- java8 时间加一秒_年货买瓜子有讲究!这些加了“料”的瓜子不安全!
- 任务队列,消息队列和rpc的区别是什么?
- SQL SERVER2008 镜像
- 用php生成html文件,怎样用PHP生成html文件
- 川大网教计算机文化基础考试题,川大网教计算机文化基础第一次作业统一标准答案.doc...
- asp.net webapi 自托管插件式服务(转)
- 外挂学习之路(8)--- 释放技能call
- redis desktop manager_面试官:Redis分布式锁如何解决锁超时问题?
- C/C++ select fd_set解释
- es客户端工具_超越 Cookie:当今的客户端数据存储
- python读取txt文件中的数字_在python中从文本文件读取两列数字
- 通过YAJL生成json语句
- PC电脑控制手机iphone(iOS 11、iOS 12、iOS 13),需越狱
- Bootcamp提示该USB驱动器无法使用
- 红贝应用架构配置式应用开发示例
- linux捕获鼠标点击事件文件,Linux捕捉鼠标事件和键盘事件的方法
- 浅谈聚合支付系统的安全性
- 高校教室多媒体设备报修管理系统
- 写字机结构---coreXY结构
- centos下中文字体文件的位置