ソフトキーバー
あらゆる向きの画面でソフトキーを使用してデバイスを操作できるように、Fire OS 5ではAndroidのナビゲーションバーが画面の下部に表示されます。ナビゲーションバーの仕様の詳細については、ユーザーエクスペリエンスの仕様を参照してください。ナビゲーションバーはカスタマイズできません。
画面のレイアウト
Fireタブレットのシステム機能にハードウェアベースのキーは用意されていないため、常にナビゲーションバーが表示されます。このため、アプリのユーザーインターフェイスがナビゲーションバーやステータスバーによって隠されないようにしてください。画面のレイアウトの詳細については、画面のレイアウトと解像度を参照してください。
android.util.DisplayMetricsからの戻り値は画面の解像度であり、ツールバーによって隠されていない領域の解像度ではありません。DisplayMetricsでクエリを実行してユーザーインターフェイスとグラフィックの適切なサイズを計算する際には、戻り値を調整してツールバーの分を補正する必要があります。
[戻る] ボタン
[戻る] ボタンは、ほとんどのアプリでデフォルトの動作で十分です。ユーザーを前のアクティビティに戻します。ただし、アクティビティでActivity.onBackPressed()メソッドをオーバーライドすることで、[戻る] ボタンの動作を変更できます。カスタマイズした動作が、ユーザーが [戻る] ボタンに期待している動作と一致するようにしてください。
@Override
public void onBackPressed() {
// [戻る] ボタンを押したときに何らかの動作を行う
return;
}
ソフトキーバーのボタン(Fire OS 4以前)
Fire OS 4以前では、ソフトキーバーには次のボタンがあります。
- ホーム
- Back(戻る)
- オーバーフローメニュー
- 検索
- お気に入り(第1世代と第2世代のKindle Fireタブレットのみ)
アプリでオーバーフローメニューのメニュー項目を指定できます。アプリの [戻る] ボタンと [検索] ボタンの動作を、システムのデフォルト以外の動作に変更できます。
デバイスを縦向きから横向きに回転すると、ソフトキーバーが画面の右端に沿って縦向きに旋回します。詳細については、デバイスの向きの設定を参照してください。
[検索] ボタン(Fire OS 4以前)
ソフトキーバーの [検索] ボタンは、デフォルトでデバイスレベルの検索インターフェイスを表示します。オプションで、アクティビティでonSearchRequested() メソッドをオーバーライドすることで、検索方法をカスタマイズできます。アクションバーからのSearchViewの管理など、検索方法をカスタマイズする方法の詳細については、Androidドキュメントの検索インターフェイスを作成するを参照してください。
@Override
public boolean onSearchRequested () {
// カスタマイズした [検索] ボタンの動作を追加する
return true;
}
オーバーフローメニュー(Fire OS 4以前)
オーバーフローメニューを使用して、ソフトキーバーからアクセスできるコマンドをさらに追加できます。オーバーフローメニューには、次の種類のコマンドを設定してください。
- アプリの設定
- 現在のユーザーインターフェイスに適合しないタスク
- アプリのグローバルアクション
オーバーフローメニューにアイテムを追加する際には、次のガイドラインに留意してください。
- アイテムは6つまでにする。オーバーフローメニューはスクロールしません。
- ラベルは短くする。テキスト文字列はラップされません。メニューは最大500 pxに拡大可能で、それを超えると切り捨てられます。
- すべてのメニューアイテムのタイトルには大文字を使用する。
オーバーフローメニューの位置は、アプリでターゲットとするAndroid APIのレベルによって決まります。次のAndroidManifest.xmlの場合、第3世代および第2世代Kindle Fireタブレットのアプリでは、オーバーフローメニューはアクションバーに表示されます。
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
<application
...
android:theme="@android:style/Theme.DeviceDefault" />
targetSdkVersionが13以下の場合、オーバーフローメニューをソフトキーバーに表示できます。AndroidManifest.xmlで、次の例に示すテーマを指定します。
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="11" />
<application
...
android:theme="@android:style/Theme.NoTitleBar" />
オーバーフローメニューのボタンが押されたときにメニューをインスタンス化するには、アクティビティでActivity.onCreateOptionsMenu() メソッドをオーバーライドします。メニュー作成の詳細については、Android APIガイドのメニューを参照してください。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.my_menu, menu);
return true;
}
警告: android.targetSdkVersion
の値を14以降に設定することや、NoTitleBar
にテーマを適用することは避けてください。これを行うと、以下に示すように、デバイスによってはメニューボタンが表示されないため、オーバーフローメニューにアクセスできなくなる場合があります。