初めて投稿させて頂きます、Hirokiと申します。
長文失礼いたします。
現在、Android4.4.2のタブレットを使用しての開発をおこなっており、
ナビゲーションバーの非表示を実装しようと考えております。
非表示自体は、実装できておりますが、一つ問題が発生しております。
解決方法など、ご存じの方がおりましたら、ご教授頂けると幸いです。
以下、実装やOSに関する情報、問題点を纏めさせていただきます。
[問題点]
ナビゲーションバーが非表示の状況で、端末の最下部から上方向にフリックすると、
ナビゲーションバーが、一瞬表示されてしまう。
[問題詳細]
onCreate()などで、ナビゲーションバーを非表示に設定し、
フリック動作により、ナビゲーションバーを表示した場合に、ナビゲーションバーを
非表示に設定しているため、
一瞬ナビゲーションバーが表示されてしまいます。
また、タッチイベント制御により、フリック、スクロール等のイベントが発生した場合に、
ナビゲーションバーを非表示とするように実装致しましたが、
一瞬ナビゲーションバーを表示する動作については、改善できませんでした。
[使用OS]
Android 4.4.2
[実装]
①ナビゲーションバーを非表示とし、システムバーを表示する。
・メソッド
activity.getWindow().getDecorView().setSystemUiVisibility();
・setSystemUiVisibility()の引数:
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE
②ナビゲーションバーの表示状態を取得するリスナーを登録し、
ナビゲーションバーが表示された場合に、非表示に設定する。
・コード
protected void onStart() {
super.onStart();
this.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(mOnSystemUiVisibilityChangeListener);
}
private OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener = new OnSystemUiVisibilityChangeListener(){
@Override
public void onSystemUiVisibilityChange(int visibility) {
if (visibility == 0) getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE);
}
};