web-dev-qa-db-ja.com

Androidが提供するonKey()、OnKeyDown()、およびdispatchKeyEvent()メソッドの違いは?

Androidが提供するonKey()、OnKeyDown()、およびdispatchKeyEvent()メソッドの違いは何ですか?
これらのそれぞれをいつ、どこで使用できるか知りたいのですが。
これに少し光を当ててください。

35
Sen

5.1ビュークラスのソース のソースコードをトレースします。 dispatchKeyEvent() はシステムによって呼び出される最初のメソッドのようです。これをオーバーロードすると、基本バージョンが呼び出されない限り、すべてのキーイベントが呼び出されなくなります。

dispatchKeyEvent()の最初の移動は、イベントがある場合は onKeyListener にイベントを渡そうとすることです。これは、onKey()が呼び出されたときです。 onKey()実装がtrueを返す場合、dispatchKeyEvent()はそこに戻り、他のイベントは呼び出されません。

onKeyListenerがない場合、またはonKeyListeneronKey()メソッドがfalseを返した場合、dispatchKeyEvent()KeyEvent 's- dispatch() メソッド。次に、ビューの KeyEvent.Callback インターフェースのすべてのメソッドを呼び出します。これには onKeyDown() および onKeyUp() が含まれます。

55
Fr33dan

DispatchKeyEventハードウェアキーイベントは常に、現在フォーカスされているビューに配信されます。これらは、ビュー階層の最上部からディスパッチされ、適切な宛先に到達するまでディスパッチされます。ビュー(またはビューの子)に現在フォーカスがある場合、dispatchKeyEvent()メソッドを介してイベントの移動を確認できます。つまり、dispatchKeyEvent()は、TextView/EditTextがフォーカスされている場合にのみ呼び出されます。

onKeyDownキーが押され、アクティビティ内のどのビューでも処理されなかったときに呼び出されます

0