Android提供的onKey(),OnKeyDown()和dispatchKeyEvent()方法有什么区别?
我想知道何时何地可以使用这些
请详细说明一下。
答案 0 :(得分:47)
跟踪5.1 Source for the View Class的源代码。似乎dispatchKeyEvent()
是系统调用的第一个方法。除非调用基本版本,否则重载它将阻止调用任何和所有键事件。
dispatchKeyEvent()
的第一步是尝试将事件传递给onKeyListener
(如果有的话)。这是在调用onKey()
时。如果onKey()
实现返回true
,则dispatchKeyEvent()
将返回此处,并且不会调用其他事件。
如果没有onKeyListener
或onKeyListener
onKey()
方法返回false
,则dispatchKeyEvent()
会调用KeyEvent
dispatch()
方法。然后,它将依次调用视图上KeyEvent.Callback
界面中的所有方法。其中包括onKeyDown()
和onKeyUp()
。
答案 1 :(得分:0)
<强> DispatchKeyEvent 强> 硬件键事件始终传递到当前焦点的视图。它们从View层次结构的顶部开始,然后向下调度,直到它们到达适当的目标。如果您的View(或您的View的子级)当前具有焦点,那么您可以通过dispatchKeyEvent()方法查看事件。简而言之,只有在TextView / EditText处于焦点时才会调用dispatchKeyEvent()。
onKeyDown 按下某个键并且未被活动内部的任何视图处理时调用