美文网首页状态栏
状态栏学习(沉浸式状态栏的实现)

状态栏学习(沉浸式状态栏的实现)

作者: 陈沉成染 | 来源:发表于2019-05-12 13:49 被阅读15次

来源

首先沉浸式状态栏这名字最早不是什么MIUI、Flyme论坛提出来的,最先是在Xposed框架汉化版中出现的,当时MIUI和Flyme都还普遍处于Android 4.1、4.1.2。当时国内汉化作者一开始命名为“变色龙状态栏”,后来的汉化版中就莫名其妙地改为了“自动沉浸式状态栏”。
作者:匿名用户
链接:https://www.zhihu.com/question/27040217/answer/34999684
来源:知乎

android中真正的沉浸式是指在游戏中,和播放视屏中隐藏状态栏。

状态栏的相关API

1 状态栏的颜色
你指定的app主题中
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
代码设置
getWindow().setStatusBarColor(Color.YELLOW);

Screenshot_2019-05-12-12-30-24.png Screenshot_2019-05-12-12-29-59.png

2 状态栏的相关设置

      View decorView = getWindow().getDecorView();
      decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
      getSupportActionBar().hide();
Screenshot_2019-05-12-13-08-00.png

decorView: 是Activity 的根视图 它包含statusbar ActionBar 和contentView(就是activity的视图)
通过decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN) 设置转态栏

1 View.SYSTEM_UI_FLAG_VISIBLE:状态栏和Activity共存,Activity不全屏显示
2 View.SYSTEM_UI_FLAG_FULLSCREEN :Activity全屏显示,且状态栏被覆盖掉
3 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN :Activity全屏显示,但会被状态栏遮挡
4 View.INVISIBLE : Activity全屏显示,隐藏状态栏
5 View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。

View decorView = getWindow().getDecorView();  
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN );
getWindow().setStatusBarColor(Color.TRANSPARENT);

将ui设置成让Activity的内容扩展至全屏,且显示状态栏,并将状态栏背景色设置为透明
但是这只是将状态栏悬浮在了activity视图上。如果activity顶部有内容将会发生遮挡

Screenshot_2019-05-12-13-31-40.png

在根视图中添加属性 android:fitsSystemWindows="true"将会使留出一部分区域给状态栏

Screenshot_2019-05-12-13-51-48.png

那么如何达到平时隐藏状态栏 ,下拉时显示状态栏

@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);
        }
    }
Screenshot_2019-05-12-13-54-34.png

相关文章

网友评论

    本文标题:状态栏学习(沉浸式状态栏的实现)

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