android沉浸式界面设置,隐藏标题栏,导航栏和底部栏,androidstudio

在学习制作一个本地音乐播放器时,尝试做出沉浸式界面效果,查看了网上很多方法,感觉都不完善,调试了半天,意外获得了自己想要的效果,便想记录下来。

无沉浸效果
android沉浸式界面设置,隐藏标题栏,导航栏和底部栏,androidstudio_第1张图片

设置沉浸后效果,顶部部件没有紧贴手机界面顶部是因为我设置了marginTop属性
android沉浸式界面设置,隐藏标题栏,导航栏和底部栏,androidstudio_第2张图片
记得在搜索的时候,得知这种效果似乎是在4.4以后才能实现,然后随着版本的变迁,方法也在改变。我的方法应该在6.0版本以上都通用。
6.0对应API23,首先在Project结构的目录下的res目录里新建values -23目录

android沉浸式界面设置,隐藏标题栏,导航栏和底部栏,androidstudio_第3张图片
选择Version,然后选择向右的箭头
android沉浸式界面设置,隐藏标题栏,导航栏和底部栏,androidstudio_第4张图片
输入23,点OK
android沉浸式界面设置,隐藏标题栏,导航栏和底部栏,androidstudio_第5张图片
创建成功
在这里插入图片描述
再右键,new一个resource文件,命名为styles
android沉浸式界面设置,隐藏标题栏,导航栏和底部栏,androidstudio_第6张图片
android沉浸式界面设置,隐藏标题栏,导航栏和底部栏,androidstudio_第7张图片

在values-23的styles中加入如下代码,自定义主题样式,继承了无标题栏样式,将导航栏设置为透明等等,具体各个属性的作用,还有待进一步探究






    



然后在Androimanifest文件里对需要设置为沉浸式界面对应Activity设置theme属性

   

然后在Activity中添加如下隐藏导航栏的方法,在oncreate方法里调用一次,然后在有需要的地方也可以调用

 //隐藏导航栏
    protected void hideBottomUIMenu() {
        //隐藏虚拟按键,并且全屏
        if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
            View v = this.getWindow().getDecorView();
            v.setSystemUiVisibility(View.GONE);
        } else if (Build.VERSION.SDK_INT >= 19) {
            //for new api versions.
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

最后在对应的layout文件里对次一级布局添加如下属性,若对顶层布局设置便不起作用,不知为啥。别忘了为顶层布局设置合适的背景达成沉浸目的。

 android:fitsSystemWindows="true"

目前问题是在点击edittext后,弹出键盘的同时会弹出导航栏,而收回键盘后,导航栏不自动收回。暂时想的办法,监听键盘收回操作,收回时调用上述隐藏导航的方法

你可能感兴趣的:(android沉浸式界面设置,隐藏标题栏,导航栏和底部栏,androidstudio)