onKeyDown方法笔记

article/2025/10/8 13:00:40

onKeyDown()⽅法详解

onKeyDown()⽅法详解

当Android设备上的物理按键被按下的时候,程序会回调onKeyDown()⽅法,该⽅法是接⼝KeyEvent.Callback中的抽象⽅法。

Android程序中所有的View都实现了KeyEvent.Callback接⼝并重写了onKeyDown()⽅法,该⽅法主要⽤于捕捉⼿机键盘被按下的事件。

public boolean onKeyDown(int keyCode,KeyEvent event)

 

onKeyDown()⽅法中的两个参数和返回值如下:

  1. keyCode:       表⽰被按下的键值(键盘码),设备的按键中的被⼀个按钮都会有其单独的键盘码,在程序中是根据键盘码知道⽤户按下的是哪⼀个键
  2. event:表⽰按键事件的对象,其中包含了触发事件的详情信息,例如事件的状态、事件的类型、事件的发⽣时间等。当⽤户按下按键       时,系统会⾃动将事件封装成KeyEvent对象供应⽤程序使⽤。
  3. 返回值:是⼀个Boolean类型的变量,当返回值为true时,表⽰已经完整处理了事件,并不希望其他的回调⽅法再次进⾏处理;当返回false时,表⽰并没有处理完事件,更希望其他回调⽅法对其进⾏处理。

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode ==event.KEYCODE_ENTER){//通过keyCode的值来判断点击的是哪⼀个键

//这⾥⾯表⽰处理的对应的事件

return true;

}

return super.onKeyDown(keyCode,event);

}

测试:

重写onkeydown方法,制作推出对话框@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode==KeyEvent.KEYCODE_BACK){AlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setTitle("提示");builder.setMessage("确认退出吗?");builder.setNegativeButton("不",null);builder.setPositiveButton("退出", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {MainActivity.this.finish();}});builder.create().show();}return true;}

主界面点击返回,效果如下

 

更多keyCode的值:

Android中的控件在处理物理按键的事件时,提供的回调⽅法有

onKeyUp() 当前⽤户在该控件上松开某个按键时触发的⽅法

onKeyLongPress() 按键长按事件

KEYCODE_CALL

拨号键

5

KEYCODE_ENDCALL

挂机键

6

KEYCODE_HOME

按键Home

3

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

未知按键


http://chatgpt.dhexx.cn/article/Iw8i73ms.shtml

相关文章

贝叶斯模型的理解(1)

一直以来,都在听说贝叶斯概率模型,这里记录一下自己对贝叶斯概率模型的一些理解。 贝叶斯模型的建立主要有3个概念:1.先验概率。2.最大似然函数。3.后验概率 这3个概念怎么建立联系呢,以投硬币这个简单的例子来理解最好。 例子…

贝叶斯估计原理及流程

知乎上有个专题叫:你对贝叶斯统计有怎样的理解?本篇尽量通俗点理解下贝叶斯统计~_~ 还是沿用经典案例: 一种癌症,得了这个癌症的人被检测出为阳性的几率为90%,未得这种癌症的人被检测出阴性的几率为90%,而人…

极大似然估计和贝叶斯估计

转载于http://blog.sciencenet.cn/blog-520608-703219.html 极大似然估计和贝叶斯估计分别代表了频率派和贝叶斯派的观点。频率派认为,参数是客观存在的,只是未知而矣。因此,频率派最关心极大似然函数,只要参数求出来了&#xff0…

贝叶斯方法的m-估计

为什么要有m-估计? 当我们通过在全部事件的基础上观察某事件出现的比例来估计概率时,例如:Pnc/n.,其中nc为该类别中的样本数量,n为总样本数量。若n5,当P0.6时,则nc为3。多数情况下该比例是对概率…

参数估计—最大似然估计与贝叶斯估计

文章目录 一 参数估计二 最大似然估计2.1 参数分量2.2 基本原理2.3 高斯情况2.3.1 协方差矩阵 Σ \Sigma Σ已知,而均值 μ \mu μ未知2.3.2 协方差矩阵 Σ \Sigma Σ和均值 μ \mu μ都未知 三 贝叶斯估计3.1 基本原理3.2 高斯情况下的贝叶斯估计3.2.1 单变量情况第…

朴素贝叶斯算法与贝叶斯估计

在看贝叶斯算法的相关内容时,你一定被突如其来的数学概念搞得头昏脑涨。比如极大似然估计(Maximum likelihood estimation ),极大后验概率估计(Maximum a posteriori estimation),先验概率(Prior probability),后验概率(Posterior…

几个贝叶斯估计的例题

几个贝叶斯估计的例题 以下例题来自《机器学习导论》,书中证明不是很全也没有推导过程,所以我补全了解答。 贝叶斯估计 Dirichlet分布 已知方差的正态分布 正态分布 此时不再是共轭后验先验分布了,会得到一个t分布,由于涉及的特殊…

贝叶斯估计实验(matlab)

1、实验内容 由于生活中很多参数如测量误差、产品质量指标等几乎都服从或近似服从正态分布,所以可以用对单变量正态分布中的贝叶斯估计进行分析并编写相应的Matlab程序,分析样本大小对贝叶斯估计误差的影响,进而验证贝叶斯估计的有效性。 2…

参数估计:贝叶斯思想和贝叶斯参数估计

http://blog.csdn.net/pipisorry/article/details/51471222 贝叶斯与频率派思想 频率派思想 长久以来,人们对一件事情发生或不发生,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大&a…

贝叶斯估计及其python实现

文章目录 1.贝叶斯估计的思想2.正态总体参数贝叶斯估计的推导3.代码实现3.1.抽取样本3.2.估计参数 4.总结参考文献 1.贝叶斯估计的思想 在统计学中有两大学派:频率学派和贝叶斯学派。针对参数估计的方法也分成两派。其中以极大似然估计为代表的频率学派和以贝叶斯估…

贝叶斯估计和极大似然估计到底有何区别

前言:原创不易,转载请告知并注明出处!微信搜索【机器学习与自然语言处理】公众号,定期发布知识图谱,自然语言处理、机器学习等知识,添加微信号【17865190919】进讨论群,加好友时备注来自CSDN。 …

【数学基础】参数估计之贝叶斯估计

从统计推断讲起 统计推断是根据样本信息对总体分布或总体的特征数进行推断,事实上,这经典学派对统计推断的规定,这里的统计推断使用到两种信息:总体信息和样本信息;而贝叶斯学派认为,除了上述两种信息以外…

贝叶斯估计与贝叶斯学习的区别

概述: 贝叶斯估计:贝叶斯估计是把待估计的参数看作具有先验分布密度p()的随机变量,其取值与样本D有关,用训练样本D估计出最优的,记为。 贝叶斯学习 :把贝叶斯估计的原理用于直接从数据对概率密度函数进行…

vue3页面刷新

整理工作中用到的页面刷新方式&#xff1a; 1.provide/inject 2.router.go(0) 3.provide,inject 一、使用provide和inject 控制<router-view>的显示隐藏 默认<router-view v-if"isRouterAlive" /> isRouterAlive是true&#xff0c;在需要刷新的时候把这…

js 页面刷新

刷新为新的页面 获得当前页面的url,即浏览器显示的地址: window.location.href; 按下enter,页面刷新为百度 刷新为当前页面 1,history.go(0)2,location.reload() 3,location=location 4,location.assign(location) 5,document.execcommand(‘refresh‘) 6,window.na…

Web页面自刷新

简单介绍两种&#xff1a; 第一种Ajax Ajax Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;&#xff0c;ajax就是基于浏览器提供的XMLHttpRequest对象来实现的 什么叫异步&#xff1f; 异步&#xff0c;不同的意思&#xff0c;这里也就…

页面刷新技术-------AJAX

一、前提步骤&#xff08;先把静态网页写出来&#xff09; 1、首先先要配置文件 2、然后去后端建立服务器&#xff0c;把该下载的模块下载好 var httprequire("http") var fsrequire("fs") var urlrequire("url") var querystringrequire(&quo…

页面刷新和vue页面刷新

history.go(0) location.reload() locationlocation location.assign(location) document.execCommand(Refresh) window.navigate(location) location.replace(location) document.URLlocation.href这几个都可以刷新&#xff1a; window.location.reload();刷新 window.locatio…

vue关于页面刷新的几个方式

在写项目的时候会遇到需要刷新页面重新获取数据&#xff0c;浅浅总结了一下几种方案。 1.this.$router.go(0) 强制刷新页面&#xff0c;会出现一瞬间的白屏&#xff0c;用户体验感不好。 2.location.reload() 也是强制刷新页面&#xff0c;和第一种方法一样&#xff0c;会造成…

HTML页面刷新及其应用例子

HTML页面刷新及其应用例子 刷新一般指重新载入当前页面。本文先给出html页面刷新重载方法汇总&#xff0c;再给出示例。 html页面刷新重载方法汇总 一、javascript页面刷新重载的方法&#xff1a; <a href"javascript:location.reload();">点击重新载入页面…