android里面onKeyDown的用法,难道不用类的吗
在Android系统中,键盘按键事件keyDown是由WindowManagerService服务来管理的,然后再以消息的形式来分发给应用程序处理,不过和普通消息不一样,它是由硬件中断触发的;在系统启动的时候,SystemServer会启动窗口管理服务WindowManagerService,WindowManagerService在启动的时候就会通过系统输入管理器InputManager来总负责监控键盘消息。这些键盘消息一般都是分发给当前激活的Activity窗口来处理的,因此,当前激活的Activity窗口在创建的时候,会到WindowManagerService中去注册一个接收键盘消息的通道,表明它要处理键盘消息,而当InputManager监控到有键盘消息时,就会分给给它处理。当当前激活的Activity窗口不再处于激活状态时,它也会到WindowManagerService中去反注册之前的键盘消息接收通道,这样,InputManager就不会再把键盘消息分发给它来处理。
1、 onKeyDown事件
Android系统最先触发按键上绑定的事件监听器,然后才触发该组件提供的事件回调方法,最后传播到该组件所在的Activity
2、Touch 事件传递
android系统中的每个View的子类都具有下面三个和TouchEvent处理密切相关的方法:
-
public booleandispatchTouchEvent(MotionEventev)这个方法用来分发
-
TouchEventpublic booleanonInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent
-
public booleanonTouchEvent(MotionEventev)这个方法用来处理TouchEvent
当有ACTION_DOWN事件时,处理流程为:
再回过头来看onKeyDown事件,其实也和touch事件的处理流程一样。
Activity获取到keydown事件 ——》分发给子View MyButton ——》 调用子View 的监听器方法——》 调用子 View 的onKeyDown方法 ——》 调用Activity的onKeyDown方法
js中的onkeydown方法是怎样使用的请多多帮忙,这个我不怎么理解!(详情看下面)
《script src=“/js/jquery-1.4.2.min.js“ type=“text/javascript“》《/script》
《!–引用jquery–》
《script type=“text/javascript“》
window.onload = function () {
document.onkeydown = keyDown;//js获取按键keycode值
$(this).keydown(function (e) {//jquery获取keycode值
alert(e.keyCode.toString());
})
}
function keyDown(e) {
var code=e.which;
var key = String.fromCharCode(code);
alert(“按下了“ + key + “,keycode:“ + code);
}
//使用的时候document换成js的元素就行了
//jquery中$(this)换成$(“.class“)或者$(“#id“)和其他的
《/script》
onkeydown和onkeypress的区别
KeyUp与KeyDown均为键盘事件。前者发生在弹起按键时,后者发生在按下按键时。
Key Down和Key Up事件提供了最低级的键盘响应。利用它们可以解决Key Press的问题。
这两个事件处理程序中除了Key Code参数外,还有一个Shift参数。综合利用这两个参数,可以检测出许多Key Press事件无法检测到的情况。如:上档键、控制键、换档键、箭头键、翻页键、小键盘的数字键与大键盘区的数字键,不仅响应按键操作而且响应释放键的操作,与菜单命令无联系的功能键。
Key Code指示按下的物理键。对于Key Code来说,A和a是作为同一个键返回的,即VB Key A。 但是大键盘区的1和小键盘区的1是作为不同的键返回的。
Key Code参数通过ASCII值或键代码常数来识别键。键代码常数的定义值可以通过Visual Basic中的对象浏览器来查询。
Key Up事件的实现和Key Down十分类似。
键盘事件彼此并不相互排斥,按下一个键时将生成Key Down和Key Press事件,松开这个键时,生成Key Up事件。
onkeydown、onkeyup和onkeypress三者之间的区别
onkeypress
这个事件在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别。
onkeyup
这个事件在用户放开任何先前按下的键盘键时发生。
onkeydown
这个事件在用户按下任何键盘键(包括系统按钮,如箭头键和功能键)时发生。
三者在事件的响应上还有一点不同,就是onkeydown 、onkeypress事件响应的时候输入的字符并没有被系统接受,而响应onkeyup的时候,输入流已经被系统接受。
关于js onkeydown事件的问题
window.onkeydown = function (envent1) {
if (envent1.keyCode == 37) {
console.log(’aaa’)
return false;
}
window.onkeyup = function (envent2) {
if (envent2.keyCode == 39) {
console.log(’bbb’);
}
}
return false;
}
你在37里面的onkeyup事件是要去监听39的keycode码,所以重新写监听事件对象,envent2才是onkeyup的事件对象,你应该把判断keyCode为39的代码放到onkeyuo事件里面。
火狐支持onKeyDown事件吗
尊敬的用户,您好!很高兴为您答疑。
火狐支持onKeyDown事件,但是实现方式与ie略有不同。请参考下文:
document.onkeydown = function(e) {e = e ? e : window.event;var keyCode = e.which ? e.which : e.keyCode;if(e.shiftKey && keyCode == 67)alert(“Hello World!“);}
希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。
onBackPressed,onKeyDown和onKeyUp这三个事件的区别
首先,来解释一下这三个事件。
onKeyDown:是当某个按键被按下是触发。所以也有人在点击返回键的时候去执行该方法来做判断。(该方法只是android 1.0~ android 2.1)
捕获判断代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
Toast.makeText(ml78.this,“返回键Back键测试“,1).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
onKeyUp:这个方法是当某个按键被按下后,抬起的时候执行,其实跟onKeyDown没什么差别
onBackPressed:在android 2.0开始多出了关于返回键的单独的事件方法,可以在该方法里面执行当点击返回键的时候做什么…所以,后期都是用这个方法比较多。
如果要考虑版本兼容的话,代码可这么写:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 是否触发按键为back键
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
} else {// 如果不是back键正常响应
return super.onKeyDown(keyCode, event);
}
}
点击两次返回键退出,防止误操作
//退出时间
privatelongcurrentBackPressedTime= 0;
//退出间隔
privatestaticfinalintBACK_PRESSED_INTERVAL= 2000;
//重写onBackPressed()方法,继承自退出的方法
@Override
publicvoidonBackPressed() {
//判断时间间隔
if(System.currentTimeMillis()-currentBackPressedTime》BACK_PRESSED_INTERVAL) {
currentBackPressedTime= System.currentTimeMillis();
Toast.makeText(this,“再按一次返回键退出程序“, Toast.LENGTH_SHORT).show();
}else{
//退出
finish();
}
}
我刚接触安卓,对于OnkeyDown(int keyCode,keyEvent event)这句代码不理解求大神指点指点
onkeyDown是方法名和java一样,
里面的 int keyCode,keyEvent event 是2个参数
int keyCode中定义一个类型为int的参数,keyCode是为了比较符合Android习惯的命名用 a,b,c其实都可以只不过这样不好。
而keyEvent event, keyEvent是个类,就是定义了一个类型为keyEvent 的event参数,event也可以用其他字母,一般可用e表示,其他的用了和上面一样只是不大好,习惯不好而已。
补充一下:在这里keyEvent 案件事件类,里面封装了很多方法,相信以后用到你就懂了。
javascript中的onkeyup和onkeydown有什么区别
onkeydown是按下的时候触发的,这个时候键值没有输出来。
onkeyup是按键抬起的时候执行的,这个时候键值已经有了。
和按多长时间没关系,比如你给输入框加这2个事件,
《input type=“text“ id=“test1“ onkeydown=“alert(this.value);“/》
《input type=“text“ id=“test2“ onkeyup=“alert(this.value);“/》
你看看这二个不同的运行结果就明白 了!