0

Android アプリケーションがアクティブなときに、それを処理するはずの実際のビューに配信される前に、すべてのキー イベント (およびタッチ イベント) をキャッチして処理する方法はありますか?

キーイベントを処理するためにアクティビティに onKeyDown または同様のメソッドを使用できることはわかっていますが、キーイベントを内部で処理する子ビューがない場合にのみ発生します。これらのビューは通常、ListView、GridView、ScrollView などです。

keyEvent がこれらのビューに配信される前に、keyHandler メソッドが呼び出される方法を見つけたいと考えています。

私の keyHandler での実装は非常に簡単です。キープレス トーンと同じように、イベントごとにトーンを再生し、それらのビューまたは Android フレームワークによって意図された方法で処理されるように転送します。

多くのアクティビティと多くのビューがあり、同じコードをどこにでも書くのが難しくなるため、すべてのアクティビティのすべてのビューに onKeyListener を書きたくないので、その可能性があるかどうかを知りたいです。方法があれば、それを BaseActivity に実装し、それによってすべてのアクティビティを派生させ、デフォルトのキー ハンドラーを使用する方法を続けることができます。

4

1 に答える 1

1

私は自分で試していませんが、これが役立つと思います:(テキストに記載されている方法まで少し下にスクロールしてください)

入力イベント: イベント ハンドラー - Activity.dispatchTouchEvent(MotionEvent)

これは、ウィンドウに到達する前にイベントをキャッチするチャンスのようです。ここで詳細な説明をお読みください。

于 2012-04-04T09:52:31.483 に答える