Androidのイベント配信の仕組みは?
Androidイベントが配信されるプロセスは以下のとおりです。
- 出来事:画面をタッチしたり、操作したりしています。
- イベントキャプチャ: イベントは最初に最上位の親ビュー(通常はActivityまたはWindow)のdispatchTouchEventメソッドに渡されます。
- イベントのディスパッチ:最高レベルの親ビューはイベントを自分のサブビューのdispatchTouchEventメソッドに渡します。
- イベント処理: サブビューのdispatchTouchEventメソッドは、イベントを自分自身で処理するか、次のレベルのビューにイベントを渡すかを決定します。
- イベント伝搬:子ビューが親ビューへイベントの委譲を決めた場合、そのイベントは親ビューのdispatchTouchEventメソッドに委譲されます。
- イベント消費:子ビューがイベントを自ら処理することを決定した場合、そのイベントの処理はビューの onTouchEvent メソッドにより行われます。
- イベントバブリング:イベントの処理後、イベントは一番下のビューから一番上の親ビューに向かって伝播します。
- イベント処理の結果、イベント処理のフローはイベントが処理されたかどうかを示すブール値を返します。 trueを返した場合、イベントは既に処理済みであり、これ以上伝達されません。 falseを返した場合、イベントは上位ビューの処理に引き続き伝達されます。
注意:イベントディスパッチのフローは、カスタムイベント処理ロジックを実装するために、書き換え可能および変更可能です。