美文网首页
Android 沉浸式状态栏 最通俗易懂的总结

Android 沉浸式状态栏 最通俗易懂的总结

作者: Mr_Ares | 来源:发表于2018-04-18 17:40 被阅读20次

    一.基本概念:

    一个Android应用程序的界面上状态栏,ActionBar ,导航栏 系统元素的,观察下图:

    状态栏、ActionBar、导航栏等。而打造沉浸式模式的用户体验,就是要将这些系统元素全部隐藏,只留下主体内容部分。

    二. 常见的Flag:

    1. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉

    2.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,

    3. View.SYSTEM_UI_FLAG_LAYOUT_STABLE

    使用了SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN和SYSTEM_UI_FLAG_LAYOUT_STABLE,注意两个Flag必须要结合在一起使用,表示会让应用的主体内容占用系统状态栏的空间

    4. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。

    5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:隐藏导航栏 效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

    6. 有的手机默认全屏显示,有时需要强制不显示全屏就用以下flag(我的手机就是怎么也不显示状态栏,发现这个坑)

    //不全屏显示getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

    //全屏显示getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

    三. 我们常常项目经常的需求是:

       需要实现 隐藏导航栏之外,同时实现透明状态栏类似的效果:

    代码实现:

    super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);

    if(Build.VERSION.SDK_INT >=21) { 

     View decorView =        getWindow().getDecorView();

    //隐藏导航栏

    intoption = 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 actionBar = getSupportActionBar();

    actionBar.hide();

    实现效果如图:

    相关文章

      网友评论

          本文标题:Android 沉浸式状态栏 最通俗易懂的总结

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