安卓5.0沉浸式模式学习笔记

转自:http://blog.csdn.net/guolin_blog/article/details/51763825
沉浸式:沉浸式就是要给用户提供完全沉浸的体验,使用户有一种置身于虚拟世界之中的感觉.
比如之前的一些游戏就做到了这一点
在这里插入图片描述
下面开始放代码和效果图
第一种 标准沉浸式

        View decorView = getWindow().getDecorView();
        int option = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(option);
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();

实现的效果图
在这里插入图片描述已经有点沉浸式的感觉了

第二种 就是模仿饿了么状态栏的一种
/**
* 模仿饿了么 留下标题栏 这样的效果只有5.0以上的系统才支持
* 我们使用了SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN和SYSTEM_UI_FLAG_LAYOUT_STABLE,
* 注意两个Flag必须要结合在一起使用,
* 表示会让应用的主体内容占用系统状态栏的空间,
* 最后再调用Window的setStatusBarColor()方法将状态栏设置成透明色就可以了。
*
* 这种效果不叫沉浸式状态栏 姑且叫做透明状态栏
*/

if(Build.VERSION.SDK_INT >= 21){
            View decorView = getWindow().getDecorView();
            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            decorView.setSystemUiVisibility(option);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();

在这里插入图片描述
第三种 隐藏导航栏 看似沉浸式 但其实点击任何一处都会退出沉浸式

        View decorView = getWindow().getDecorView();
        int option = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
                View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(option);
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();

在这里插入图片描述
第四种 制作透明导航栏 跟饿了么的相似

        if (Build.VERSION.SDK_INT >= 21) {
            View decorView = getWindow().getDecorView();
            int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            decorView.setSystemUiVisibility(option);
            getWindow().setNavigationBarColor(Color.TRANSPARENT);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();

在这里插入图片描述
第五种 真正的沉浸式

 @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus && Build.VERSION.SDK_INT >= 19) {
            View decorView = getWindow().getDecorView();
            decorView.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);
        }
    }

在模拟器上看不出什么 在手机上运行的效果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43826827/article/details/89378639