2

フラグSYSTEM_UI_FLAG_FULLSCREENを使用しSYSTEM_UI_FLAG_HIDE_NAVIGATIONて、ステータス バーとナビゲーション バーの両方を非表示および表示しています。それらは正しく機能しています。アクティビティの開始時にそれらを非表示にしており、タッチイベントで再度表示したい. Android は、最初のタッチ イベントでそれらを自動的に表示します (この最初のタッチ イベントはアプリに渡されません)。sendMessageDelayed()一定時間後に両方のバーを非表示にするために使用することを考えています。このファースト タッチ イベントをどのように使用できますか?

4

2 に答える 2

7

を使って入手しましたView.OnSystemUiVisibilityChangeListenerHandler.sendMessageDelayedステータス バーとナビゲーション バーの両方が表示されている場合に、if 条件内で使用しました。明確にするために、以下の実装を参照してください。

出典 : UI 表示の変更への対応

View decorView = getActivity().getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {@Override
    public void onSystemUiVisibilityChange(int visibility) {
        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
            // TODO: The system bars are visible. Make any desired
            Message msg = mHandler.obtainMessage(HIDE_STATUSBAR); //Implement your hide functionality accordingly                
            mHandler.sendMessageDelayed(msg, 3000);
        } else {
            // TODO: The system bars are NOT visible. Make any desired

            }
        }
    }
});

このアプローチの欠点は、最初のタッチ イベントをアプリで使用できないことです。その場合、 WindowManager.LayoutParamsImmersive Fullscreen Modeなどの他のアプローチを使用する必要があると思います。

于 2015-08-26T20:39:15.617 に答える