dispatchKeyEventでkeyeventをハンドリングする方法
dispatchKeyEventを使用したキーイベントのハンドリング
今回はAndroidのdispatchKeyEventでキーイベントをハンドリングする方法を説明します。
dispatchKeyEventを使用すると以下のような使い分けが可能になります。
- 全画面共通でバックキー押下時にアプリ終了確認ダイアログを出す
- 特定のレイアウト表示時のバックキー押下はレイアウトを閉じ、
それ以外でのバックキー押下はアプリ終了確認ダイアログを出す
Androidアプリの開発ではバックキーの挙動を意図的に変えたり
無効にしたい場面があると思いますので本稿をご覧頂き、
意図するAndroidアプリ作成のお手伝いになれば幸いです。
dispatchKeyEventを使用する方法と注意点
AndroidでdispatchKeyEventを使用するには
キーイベントをハンドリングしたいActivityやFragmentでdispatchKeyEventをオーバーライドします。
注意点としてはスーパークラスにイベントをreturnしないとキーイベントのハンドリングが行えないことです。
太字で記述してある下記コードの記述を忘れないように入力してください。
return super.dispatchKeyEvent(event);
/**
* キーイベントの取得
*/
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
//バックキーが押されたとき
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK){
if (event.getAction() == KeyEvent.ACTION_DOWN){
//特定のレイアウトが表示されている場合の処理をここで記述
if (mComposeMenuLayout.getVisibility() == View.VISIBLE){
}
} else if(event.getAction() == KeyEvent.ACTION_UP){
//ボタンが離された時の処理
}
}
return super.dispatchKeyEvent(event);
}
dispatchKeyEventでよく使用するキーの定義一覧
Androidでよく使用するキー定義を下記に記載致しました。
特定のキーイベントをハンドリングしたい時は前述のJavaコードのKeyEvent.KEYCODE_BACKの部分を置きかえてください。
キー定義 | 概要 |
---|---|
KEYCODE_APP_SWITCH | アプリケーションの切り替え |
KEYCODE_BACK | バックキー |
KEYCODE_CALL | 通話キー |
KEYCODE_CAMERA | カメラ起動 |
KEYCODE_ENDCALL | 終話キー |
KEYCODE_ENVELOPE | メール起動特殊キー |
KEYCODE_EXPLORER | ファイラ起動用特殊キー |
KEYCODE_FOCUS | カメラフォーカスキー |
KEYCODE_HEADSEtdOOK | ヘッドセット割込キー |
KEYCODE_HOME | ホームキー |
KEYCODE_MENU | メニューキー |
KEYCODE_POWER | 電源キー |
KEYCODE_SEARCH | 検索キー |
KEYCODE_SETTINGS | 設定キー |
KEYCODE_SWITCH_CHARSET | 文字入力モード切替 |
KEYCODE_VOLUME_DOWN | ボリュームDOWN |
KEYCODE_VOLUME_MUTE | ミュート |
KEYCODE_VOLUME_UP | ボリュームUP |
参考サイト
スポンサーリンク
ディスカッション
ピンバック & トラックバック一覧
CBD Oil for Dogs
dispatchKeyEventでkeyeventをハンドリングする方法 | ITハック