Androidが提供するonKey()、OnKeyDown()、およびdispatchKeyEvent()メソッドの違いは何ですか?
これらのそれぞれをいつ、どこで使用できるか知りたいのですが。
これに少し光を当ててください。
5.1ビュークラスのソース のソースコードをトレースします。 dispatchKeyEvent()
はシステムによって呼び出される最初のメソッドのようです。これをオーバーロードすると、基本バージョンが呼び出されない限り、すべてのキーイベントが呼び出されなくなります。
dispatchKeyEvent()
の最初の移動は、イベントがある場合は onKeyListener
にイベントを渡そうとすることです。これは、onKey()
が呼び出されたときです。 onKey()
実装がtrue
を返す場合、dispatchKeyEvent()
はそこに戻り、他のイベントは呼び出されません。
onKeyListener
がない場合、またはonKeyListener
のonKey()
メソッドがfalse
を返した場合、dispatchKeyEvent()
はKeyEvent
's- dispatch()
メソッド。次に、ビューの KeyEvent.Callback
インターフェースのすべてのメソッドを呼び出します。これには onKeyDown()
および onKeyUp()
が含まれます。
DispatchKeyEventハードウェアキーイベントは常に、現在フォーカスされているビューに配信されます。これらは、ビュー階層の最上部からディスパッチされ、適切な宛先に到達するまでディスパッチされます。ビュー(またはビューの子)に現在フォーカスがある場合、dispatchKeyEvent()メソッドを介してイベントの移動を確認できます。つまり、dispatchKeyEvent()は、TextView/EditTextがフォーカスされている場合にのみ呼び出されます。
onKeyDownキーが押され、アクティビティ内のどのビューでも処理されなかったときに呼び出されます