android里面onKeyDown的用法,难道不用类的吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android里面onKeyDown的用法,难道不用类的吗相关的知识,希望对你有一定的参考价值。

查了一下音量键的监听,发现了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方法

参考技术A 自带方法啊。Android封装好了的,可以理解为Integer.parseInt()这种啊。
Android的事件,KeyEvent,TrackBallEvent,TouchEvent什么的,简单开发时,只要继承就行了。追问

但是integer也是类啊!

追答

Android封装好了的

Android封装好了的

Android封装好了的

Android封装好了的

Android封装好了的

Android封装好了的

追问

追答

哥们,敲完了不行吗?
再说那个onkeydown属于keyevent里面,直接用,有点猛啊

追问

不能在这里重写吗?如果是有地话为什么不能用(Ait+/)弄出来,还有说句题外话,别生气哦,你那句“Android封装好了的”让我有了一份难道你是女生的遐想。

追答

很无语。。。
除去onKeyDown不是这么用不说。
很多东西,并不是能alt出来的,甚至是敲完才能import出来的。
我不知道你是真不会还是在胡搅蛮缠。。。
Android KeyEvent的用法还是好好看资料吧。。。

ps:不能理解封装的概念,如果去开发ios会更销魂。

本回答被提问者采纳

怎么在JS里面设置自动出发onkeydown()事件,例如当用户输入的商品件数达到10件就自动触发提交按钮。

function insertNum()
i=i+1;
if(i>=10)
document.insertForm.overstep.value="你已经输入10件商品数量和编号了.";
这里怎么写?可以让提交按钮自动按下或者焦点移到上面也行


<input type="submit" value="提 交" />

function insertNum()
i=i+1;
if(i>=10)
//document.insertForm.overstep.value="你已经输入10件商品数量和编号了.";
document.insertForm.submit();
//document.insertForm.Tj.click();//或者这一句也可以!


<input type="submit" value="提 交" name="Tj" id="Tj"/>追问

//document.insertForm.Tj.click();//或者这一句也可以!
还可以这么写把:document.getElementByID("Tj").click();

追答

这样写当然也可以,但如果你的页面上有两个ID为TJ的按钮呢?那就无效了!建立还是写成表单名.按钮名的形式!

参考技术A ......可以,但需要用js自带的提交函数追问

好像有印象不记得了,好像还得给提交按钮取个名字吧?document.insertForm.提交Name.submit();是不是啊?

追答

貌似是的~

参考技术B 用原生的button.click()方法, http://www.w3school.com.cn/htmldom/met_button_click.asp

以上是关于android里面onKeyDown的用法,难道不用类的吗的主要内容,如果未能解决你的问题,请参考以下文章

android回退键不触发onkeydown事件

android FragmentActivity 不响应 onKeyDown事件

Android onKeyDown 两次返回键退出

输入事件侦听器(onkeypress、onkeydown)在 Android 数字键盘中不起作用

批处理Move用法

Android 中onKeyDown()方法使用详解