Android沉浸式状态栏方法总结

为什么用沉浸式状态栏?

也不知道从什么时候开始大部分的App已经全部向沉浸式状态栏靠拢,这种效果应该是想让最顶部的状态栏和项目的标题栏过渡比较融和吧。
不过沉浸式状态栏这种叫法可能不太妥当。

本篇文章参考郭霖的博客。
郭霖博客地址:Android状态栏微技巧,带你真正理解沉浸式模式

第一种实现方式

其实主要实现的就是顶部状态栏和toolbar的颜色一致达到效果。

Paste_Image.png

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

其中 colorPrimaryDark这个参数就是设置状态栏的颜色,设置状态栏和toolbar或者自定义的标题栏颜色一致的话会显示

状态效果

第二种实现方式

第二种实现方式是把主题布局往上移动,把布局从屏幕的左上角开始计算。所以这种方式需要注意,把顶部状态栏的高度要计算在出来。

 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();
布局往上移动的方式

第三种实现方式

第三种表面看来是全屏的方式,然后可以通过滑动顶部来实现状态栏的弹出,然后会自动隐藏掉。这种模式也是真正意义的沉浸式状态栏。

git效果:http://note.youdao.com/share/?id=fdc645c84ad9cd4e4ba0841b116a703c&type=note#/

自动隐藏顶部状态栏

实现方式:在Activity中实现如下方法

 @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);
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,294评论 25 709
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 在4.4之前状态栏一直是黑色的,在4.4中带来了 windo...
    Corrine_Shao阅读 8,113评论 1 25
  • 前言 网上已经有很多有关于系统状态栏的解决方案,这篇文章也不会有什么新奇的解决方案,都是本人经过自己试验,统计提炼...
    btman阅读 128,204评论 33 211
  • 应用市场上App越来越多的出现沉浸式状态栏的设计(如下图所示)状态栏和导航栏具有相同的颜色。Android在4.4...
    Jensen95阅读 5,492评论 2 13
  • 随着时间的飞逝,尽早已忘记了当年那个一直在寻找四叶草的我
    影芯阅读 1,807评论 0 0