最近の Android 4.0 携帯の多くはソフトウェアボタン(バック、ホーム、メニュー)のみが付いています。 ハードウェアボタンと違い、ソフトウェアボタンは画面上でスペースを取ってしまい、ゲームとしては見た目があまりよくありません。 ボタンのあるバーを完全に非表示にするのは不可能ということはご存知かもしれません。
以下の方法でシステムバーを非表示にすることができます:
Low Profile モードはゲームにおいてとても便利です。これを使うと以下のようになります; 左の画像が normal モード、右の画像が low profileモード:
以下がLow Profile モードを安全に実装する方法です。このメソッドはAndroid 4.0 (Ice Cream Sandwich)以降のバージョンでのみ動作確認を行っています。:
@SuppressLint("NewApi")
private void dimSoftButtonsIfPossible() {
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
}
注意: ハードウェアボタンの付いた携帯でどのように動作するかは確認できていません。誰か確認できた方は、コメントを残してください - とても有難いです :)
AndEngineでは以下のように実装すると良いでしょう:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// do whatever you need here
dimSoftButtonsIfPossible();
}
return false;
}
@Override
public void onPopulateScene(Scene pScene,
OnPopulateSceneCallback pOnPopulateSceneCallback)
throws IOException {
// do whatever you need here
runOnUiThread(new Runnable() {
@Override
public void run() {
dimSoftButtonsIfPossible();
}
});
pOnPopulateSceneCallback.onPopulateSceneFinished();
}
@Override
public synchronized void onResumeGame() {
super.onResumeGame();
// do whatever you need here
runOnUiThread(new Runnable() {
@Override
public void run() {
dimSoftButtonsIfPossible();
}
});
}