2012-04-04 4 views
0

アンドロイドアプリケーションでは、アクティブになっているAndroidアプリケーションが、処理されるはずの実際のビューに配信される前に、すべてのキーイベントを捕捉して処理しますそれ?Androidアプリケーションのデフォルトのキーイベントハンドラ

私は、keyeventを処理するために、onKeyDownまたは同様のメソッドをActivityに含めることができますが、子ビューのいずれも内部で処理しない場合にのみ起動されることがわかります。 これらのビューは、通常、ListView、GridView、ScrollViewなどです。

keyEventがこれらのビューに配信される前にkeyHandlerメソッドが呼び出される方法を探したいと思います。

私のkeyHandlerでの実装は非常に簡単です。キーストーントーンのように、各イベントごとにトーンを再生し、そのビューやAndroidフレームワークが意図したとおりに処理されるように転送します。

私はたくさんのアクティビティとたくさんのビューを持っているので、onKeyListenerを各アクティビティの各ビューに書きたくないので、どこでも同じコードを書くのが難しくなります。方法がある場合は、BaseActivityでそれを実装して、それを使ってすべてのアクティビティを導き出し、デフォルトのキーハンドラを持って行くことができます。

答えて

1

私はそれを自分自身を試していないが、私はこの1つはあなたを助けるだろうと思う:(ちょうど下のテキストに記載された方法に少しスクロール)

Input Event: Event Handlers - Activity.dispatchTouchEvent(MotionEvent)

これはチャンスであるように見えます窓に出る前にイベントをキャッチする。詳細Description hereを読んでください。

+0

正確に私が必要としたもの。ありがとう:)私は実際にKeyEventのためにそれを必要としました。それを派生させ、ウィジェットがそれを手に入れる前にイベントを取得しています。 – Puneet

関連する問題