開発メモ:システムバーを一時的に隠す、または見えにくくする方法

このエントリーをはてなブックマークに追加


システムバー

Androidタブレット端末で、画面下部を常に陣取っているシステムバー(上画像赤枠部分)を一時的に隠したり、見えにくくしたりする方法を調べましたのでメモしておきます。

タイトルバーやステータスバーの非表示は、Manifestファイルにてアクティビティのテーマを、『Theme.Light.NoTitleBar.FullScreen』などの『NoTitleBar.FullScreen』がついているテーマに変更することで行えます。ですが、システムバーをこのような方法で非表示にすることはできないようです。
まあ、非表示にしてしまうとホームボタン等の各種ボタンが押せなくなって操作不能になってしまうので、当然といえば当然ですね。
けれど時には、そのせいで画面領域を最大限に活用できなかったり、操作ユーザーの集中力を妨げる原因になってしまうこともあるので、本記事のタイトルにもある通り、二つの折衷案が用意されていました。

ではまず、システムバーを一時的に隠す方法から。ソースコードに以下の内容を記述します。


View view = (View)findViewById(R.id.relativeLayout);
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

作成するViewインスタンスには、アプリのレイアウトXMLファイルで定義されているレイアウトを、どれか一つ指定します(ここではRelativeLayout)。なお私がテストした環境では、最上位以外のレイアウトでも大丈夫でした。
そして作成したViewインスタンスを使って、setSystemUiVisibilityメソッドに『SYSTEM_UI_FLAG_HIDE_NAVIGATION』を設定し、呼び出すだけです。

システムバーを一時的に非表示にする

このように、アプリの画面からシステムバーを一時的に隠すことができます。ただし画面がタッチされた際に、自動で表示状態に戻ります。
タッチしただけですぐ元に戻ってしまうので使いどころが難しいですが、例えば動画を流す場面ではユーザー側からの操作があまり行われないため、画面領域を広く活用することができそうです。
なお引数として与える『SYSTEM_UI_FLAG_HIDE_NAVIGATION』はAPI14(Android4.0)からの新機能ですので、Manifestファイルのandroid:targetSdkVersionは14以上を指定しておきましょう。

続いてシステムバーを見えにくくする方法ですが、上の方法とほとんど変わりません。変わるのはsetSystemUiVisibilityメソッドに与える引数だけで、


View view = (View)findViewById(R.id.relativeLayout);
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);

と、『SYSTEM_UI_FLAG_LOW_PROFILE』を引数にして呼び出します。

システムバーを見えにくくする

するとこのように、システムバーが(正確にいえばシステムバー上のボタンが)薄っすらと白い点になって、見えにくい状態となります。
こちらはアプリの画面をタッチしても元には戻らないので、例えばゲームアプリでユーザーを画面に集中させたい時に効果を発揮しそうですね。
『SYSTEM_UI_FLAG_LOW_PROFILE』については、先述の『SYSTEM_UI_FLAG_HIDE_NAVIGATION』と同様にAPI14(Android4.0)以上が推奨となります。

なおAndroidスマートフォンのナビゲーションバーについても、これらの方法で隠したり見にくくしたりできます。
タブレットを操作する上でなくてはならないけれど、時には邪魔にもなってしまうシステムバー。より使い心地のいいアプリを目指す際には、これらの方法で操作ユーザーの集中力を妨げないよう配慮してみるのも、大切かもしれませんね。

2013年8月20日 | カテゴリー : Android開発 | 投稿者 : youchin