Android M App 永久隐藏导航栏的Solution

作者: 弘二大师 | 来源:发表于2017-09-22 09:29 被阅读146次

    做项目,客户要求在App 中隐藏导航栏。这个比较简单,网上资料一大把。 现做下笔记。
    Android 隐藏导航栏, 有好几种办法:
    1)修改系统级代码,使系统具有隐藏导航栏的功能;
    这种实现方法可以参考:www.jianshu.com/p/f741e3c5b1df
    2) 直接在App 中通过相应API 隐藏App 自己的导航栏。

    第二种是我们今天要讲的主题。 该方案是使用沉㓎式的隐藏那个方案。

    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 函数请参考:点击这里

    相关文章

      网友评论

        本文标题:Android M App 永久隐藏导航栏的Solution

        本文链接:https://www.haomeiwen.com/subject/guvxextx.html