Android提供的onKey((、OnKeyDown((和dispatchKeyEvent((方法有什么区别
我想知道何时何地可以使用这些
请澄清一下。
跟踪视图类的5.1源代码。似乎dispatchKeyEvent()
是系统调用的第一个方法。重载它将阻止调用任何和所有关键事件,除非调用基本版本。
dispatchKeyEvent()
的第一步是尝试将事件传递给onKeyListener
(如果有(。此时调用onKey()
。如果onKey()
实现返回true
,则dispatchKeyEvent()
将返回,并且不会调用其他事件。
如果没有onKeyListener
或onKeyListener
的onKey()
方法返回false
,则dispatchKeyEvent()
将调用KeyEvent
的dispatch()
方法。然后它将依次调用视图中KeyEvent.Callback
接口中的所有方法。这包括onKeyDown()
和onKeyUp()
。
DispatchKeyEvent硬件关键事件始终传递到当前处于焦点的视图。它们从视图层次结构的顶部开始调度,然后向下调度,直到到达适当的目的地。如果您的视图(或视图的子视图(当前具有焦点,那么您可以通过dispatchKeyEvent((方法看到事件的传播。简而言之,只有当TextView/EditText处于焦点时,才会调用dispatchKeyEvent((。
onKeyDown当按下某个键时调用,并且该键未由活动内部的任何视图处理