Android提供的onKey(),OnKeyDown()和dispatchKeyEvent()方法之间的区别?

时间:2011-10-21 07:04:56

标签: android events key

Android提供的onKey(),OnKeyDown()和dispatchKeyEvent()方法有什么区别?
我想知道何时何地可以使用这些 请详细说明一下。

2 个答案:

答案 0 :(得分:47)

跟踪5.1 Source for the View Class的源代码。似乎dispatchKeyEvent()是系统调用的第一个方法。除非调用基本版本,否则重载它将阻止调用任何和所有键事件。

dispatchKeyEvent()的第一步是尝试将事件传递给onKeyListener(如果有的话)。这是在调用onKey()时。如果onKey()实现返回true,则dispatchKeyEvent()将返回此处,并且不会调用其他事件。

如果没有onKeyListeneronKeyListener onKey()方法返回false,则dispatchKeyEvent()会调用KeyEvent dispatch()方法。然后,它将依次调用视图上KeyEvent.Callback界面中的所有方法。其中包括onKeyDown()onKeyUp()

答案 1 :(得分:0)

<强> DispatchKeyEvent 硬件键事件始终传递到当前焦点的视图。它们从View层次结构的顶部开始,然后向下调度,直到它们到达适当的目标。如果您的View(或您的View的子级)当前具有焦点,那么您可以通过dispatchKeyEvent()方法查看事件。简而言之,只有在TextView / EditText处于焦点时才会调用dispatchKeyEvent()。

onKeyDown 按下某个键并且未被活动内部的任何视图处理时调用