Android MApp永久非表示ナビゲーションバーのSolution

3139 ワード

プロジェクトを行い、お客様はAppでナビゲーションバーを非表示にするように要求します.これは比較的簡単で、ネット上の資料はたくさんあります.今メモをとります.Androidはナビゲーションバーを隠して、いくつかの方法があります:1)システムレベルのコードを修正して、システムにナビゲーションバーを隠す機能を持たせます;この実現方法は、www.jianshu.com/p/f 741 e 3 c 5 b 1 df 2)は、App内で対応するAPIを介してApp自身のナビゲーションバーを直接非表示にする.
2つ目は私たちが今日お話しするテーマです.この案は沈
public class MainActivity extends Activity {
   ..........

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ......................
        final  View decorView = getWindow().getDecorView();
        final int  uiOption = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        |View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        |View.SYSTEM_UI_FLAG_IMMERSIVE
                        |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;

        decorView.setSystemUiVisibility(uiOption);

        // This code will always hide the navigation bar
        decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener(){
            @Override
            public void  onSystemUiVisibilityChange(int visibility)
            {
                if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
                {
                    decorView.setSystemUiVisibility(uiOption);
                }
            }
        });
    }

    // this is to start to be visible!
    @Override
    public void onWindowFocusChanged(boolean hasFocus)
    {
        super.onWindowFocusChanged(hasFocus);

            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }
}


onWindowFocusChanged関数参照:ここをクリック