键盘按下和抬起事件(keydown,keyup)——原创
来源:互联网 发布:方正手机炒股软件 编辑:程序博客网 时间:2024/05/01 20:28
Android学习自修笔记(一)
键盘按下和抬起事件(keydown,keyup)
————将军的Android自修之途
通常按键的动作分为单击、按下和抬起,但实际上单击并不能算单独的按键事件,因为系统底层(Linux内核)在按键按下时会发出一个中断,在按键抬起时也会发送一个中断,并没有在按键单击时发中断。其实按键单击就是按键按下和抬起的组合动作,所以窗口事件中并不能捕获按键单击事件,而只能捕获按键按下和抬起事件,分别用onKeyDown和onKeyUp方法捕获。
源码实例如下:
publicclass ActivityEventMainextends Activity {
publicclass ActivityEventMainextends Activity {
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_main);
}
//捕获按键按下事件
publicboolean onKeyDown(int keycode,KeyEvent event){
//输出按键代码
Log.d("onKeyDown:keycode",String.valueOf(keycode));
//输出按键重复次数
Log.d("onKeyDown:RepeatCount", String.valueOf(event.getRepeatCount()));
//如果重复次数到了200(8秒左右),显示提示
if(event.getRepeatCount()==200)
{
Toast.makeText(this,"已经按一会了,累了吧,该松开了!", Toast.LENGTH_LONG).show();
}
//如果按下的是“菜单”按钮,输出日志信息
if(keycode==KeyEvent.KEYCODE_MENU)
{
Log.d("onKeyDown","MenuKeyDown");
}
returnsuper.onKeyDown(keycode, event);
}
//捕获按键抬起事件
publicboolean onKeyUp(int keycode,KeyEvent event)
{
if(keycode==KeyEvent.KEYCODE_MENU)
{
Log.d("onKeyUp","MenuKeyDown");
}
returnsuper.onKeyUp(keycode, event);
}
}
其中onKeyDown和onKeyUp方法的参数和类型完全一样,其中Keycode表示按下或抬起的按键代码,通过event参数则可以获得更多的按键信息。其中有一个KeyEvent.getKeyCode方法与keycode参数的含义完全一样。如果这两个方法返回true,表示按键事件已经处理完毕。
注意:处理键盘事件的方法不止一个,这些方法是以一个链表形式组织在一起的,当前方法执行完,会执行下一个方法。如果其中某一个方法返回true,系统就不会在调用后面的方法处理按键事件了。
使用onkeyDown和onkeyup方法捕捉事件应了解如下几点:
(1)onkeyDown和onkeyup方法不能捕捉“Home”按键
(1)onkeyDown和onkeyup方法不能捕捉“Home”按键
(2)按键重复次数是指按下按键还没有抬起的期间系统会以一定时间间隔不断发送键盘按下中断,也就是说会不断调用onkeyDown方法,使用KeyEvent.getRepeatCount方法可以获取调用onkeyDown方法的次数,也就是按键重复次数,RepeatCount从0开始。如果按键抬起,并再次按下,RepeatCount会清零。
(3)所有的物理按键的按下和抬起动作都由onkeyDown和onkeyup方法捕获,如果想判断具体按下了哪个按键,可以使用keycode参数,也可以使用keyEvent.getKeycode方法。可以直接通过按键编码进行判断,但是最好使用在KeyEvent类中定义的表示按键编码的常量,所有表示按键编码的常量都以“KEYCODE”开头。
0 0
- 键盘按下和抬起事件(keydown,keyup)——原创
- 【c#】键盘事件(keypress keydown keyup)
- 键盘事件keydown、keypress、keyup
- 键盘事件keypress 和 keydown、keyup 的用法与区别
- 键盘事件keydown、keypress、keyup随笔整理总结(摘抄)
- 监听keyup 和keydown 事件
- 键盘事件keydown、keypress、keyup分析解答
- 键盘事件keydown,keypress,keyup区…
- 键盘事件keydown,keypress,keyup区别
- js keyup、keypress和keydown事件 详解
- js keyup、keypress和keydown事件 详解
- js keyup、keypress和keydown事件 详解
- 事件文本框键盘事件keydown,keypress,keyup区别
- keydown keypress keyup事件
- js捕获键盘事件之keydown、keyup以及keypress
- C# KeyDown KeyPress KeyUp 处理相应的键盘事件
- 键盘事件keydown、keypress、keyup随笔整理总结
- 键盘事件keydown、keypress、keyup随笔整理总结
- PHP页面间参数传递的四种方式
- FIRST集和FOLLOW集以及SELECT集
- mediarecorder中的方法以及工作流程的过程
- GRect常见用法和几个 CGRect 函数
- The second day
- 键盘按下和抬起事件(keydown,keyup)——原创
- android中Canvas使用drawBitmap绘制图片
- dom4j对于xml文件的操作
- MySQL安装后不能用的问题解决方案
- ZJU PAT 1016 部分A+B
- 我的新法宝Take Command
- 5623:雨花石
- JSP学习之路(二):设置input标签中,选择自动清除文本框中的内容
- OpenNMS全接触-线程池(五)(续)