和尚我最近在调整页面状态栏的效果,主要包括沉浸式状态栏和伪沉浸状态栏(同事唠嗑给定义的玩的)。...前段时间整理过一篇 Android 沉浸式状态栏的多种样式,现在和尚我在稍微的补充一下,都是在日常应用中测试整理的。...,戏称为伪沉浸式状态栏。...图2 ---- Tips1: Window 是一个很值得研究的类,设置 statusBarColor 属性即可修改状态栏颜色。...Tips2: 若配合打开代码中注释的两行,整体的效果是隐藏掉状态栏高度,标题栏上移,如图2所示,在其他相应的场景下很有用。
好了废话不多说了,沉浸式状态栏现在已经非常普及了,不然请自行脑补一个画面(主题是蓝色的界面搭配白色,后来头顶冒出来一块红色的系统自带状态栏, 那画风。。。。)...沉浸式状态栏如下 : 再来一张 其实沉浸式状态栏不仅仅指的是顶部的状态栏,基于手机的不同,还有底部的手机也可以改成类似的 ,前提是手机得有这种底部的按钮: 如下 效果介绍完了,接下来就是实现了...如果是4.4之前版本的手机的话,是不会产生沉浸式状态栏的效果的, 而且部分手机会已经帮助你实现了,我这里是乐视2 版本是 6.0 已经帮我实现了部分界面的沉浸式; 代码片段 ; /**...* 沉浸式状态栏 * 当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏 */ private void initState() { if (Build.VERSION.SDK_INT...: 记得要给最外层设置背景色, 不然的话状态栏就百了。
随着用户要求的不断提高,Android版本的不断升级,沉浸式状态栏似乎已经成为了每个App的必备功能。 ...在笔者的使用中,沉浸式状态栏分为两种: 控制状态栏颜色,使状态栏和标题栏颜色相同或者相近。达到合二为一的效果。 ? 使我们开发部分顶进状态栏,与状态栏重合。...如何控制状态栏: 在Android中用Window类管理状态栏,我们将固定方法封装为StatusBarUtil。...我们的需求是实现沉浸式状态栏,并且我们同样不希望没个页面都要我们手动去设置一次,所以我们将在BaseActivity中实现。 ...首先我们得现将状态栏设置为全透明,这样,我们的第二种状态栏方式就实现了,放上图片会发现,图片会顶入状态栏中。
4.4 以上要做所谓沉浸式,其实不是真正意义上的沉浸式,只是一种透明状态栏。 而由于 Android API 的不同,需要考虑 4.4、5.0、6.0 前后的不同。...适配 5.0 和 6.0 以上 应用风格如果是白色的,想把状态栏也设置成白色的,会导致状态栏上的图标文字看不见了,经查询发现 6.0 以上可以修改状态栏图标文字风格,可以改成黑的,但是 6.0 以下版本无解...适配 4.4 4.4 版本需要透明状态栏,将内容往下移,然后再加一个和状态栏一样大小的 View 覆盖到状态栏上面。...,但某些 Activity 要自己单独的样式,又创建了一个对象,结果专门做沉浸的这个类被构造了两遍,导致 paddingTop 计算错误。...Activity 是 SDK 里面的,可以用 ActivityLifecycleCallbacks,在 ActivityLifecycleCallbacks 里可以拿到 Activity 的实例,这里可以做沉浸
:windowTranslucentNavigation">true 其中 android:windowTranslucentStatus表示是否要填充顶部的状态栏区域...android:windowTranslucentNavigation表示是否要填充底部的状态栏区域 这两种样式的目的就是默认让应用的内容放置到系统栏的下边,如果仅仅想扩展背景样式到系统栏下边,则需要设置...getApplicationContext())); //此处判断的目的是让Android系统大于等于4.4的系统才执行沉浸式的功能...View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } // 获取手机状态栏高度
前言 Google的Material Design的发布让Android具备了更多的个性化元素,例如,“沉浸式”状态栏。问题来了,那么在低版本Android上可以用吗?...其实,在Android >= 4.4的版本中,都可以进行“沉浸式”状态栏适配的,只不过效果不太一样,Android >= 5.0 版本中设置更加简单,Android >= 4.4 但 < 5就比较麻烦。
前言 Android沉浸式体验有几个注意点 Android4.4(api19)及以上的版本才支持 Android5.0(api21)及以上的版本状态栏多了一个半透的黑色层 Android5.0(api21...item name="colorAccent">@color/colorAccent onCreate方法中添加(Kotlin代码) 用这种方式去除Android5.0以上 状态栏的黑色半透层...WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) window.statusBarColor = Color.TRANSPARENT } 接下来就是设置状态栏的背景了...clipToPadding="true" android:background="@android:color/holo_blue_light" 这种方式首先最外层必须要设置为背景色 它会用该背景色来填充状态栏和虚拟按键栏
和尚前些日子整理了两次小小的沉浸式状态栏的总结:Android 沉浸式状态栏的多种样式 和 Android 沉浸式状态栏以及伪沉浸式状态栏。...今天和尚我再稍稍补充一点,Java/Kotlin 代码中设置 LayerDrawable 方式实现沉浸式状态栏。...LayerDrawable 为图层叠加,对应 xml 中的 layer-list 层次化方式展示 Drawable,和尚我借用这种方式实现与以前一样的含有图片的沉浸式状态栏样式。
背景 在使用某APP的过程中发现,该APP对PopupWindow的沉浸式支持并不好,在使用PopupWindow的时候,状态栏会变成纯白色,看不到时间信号等等。如下图所示 ?...APP弹出菜单时候状态栏底色纯白 而正常的状态栏应该如下图所示 ? 正常情况下状态栏显示 问题追踪 看到这个之后觉得顶部看不到时间、信号神马的非常不舒服,于是上Google查了一下原因。...其中的有一句话: Set the dialog to not focusable (makes navigation ignore us adding the window) 设置Dialog没有焦点,使得状态栏忽略新添加的...Window 这样就能可以实现状态栏在PopupWindow/Dialog弹出的时候,也可以正常显示了,在自己做的Demo中也证实了这一点 解决办法 在PopupWindow/Dialog展示(show...)之前,调用setFocusable(false),这样在弹出PopupWindow的时候没有焦点,就不会影响沉浸式状态栏的显示了。
和尚我最近正在处理客户端顶部沉浸式展示图片,借此整理了一下和尚自己研究测试的沉浸式状态栏。...沉浸式状态栏大家都很熟悉,即 APP 界面图片延伸到状态栏, 应用本身沉浸于状态栏,即顶部不会默认展示系统的黑条。和尚我技术有限,理解不透彻,仅分享一下自己应用测试中可以呈现的几种样式。 ?...样式设置背景色为图片或添加一个 ImageView 控件),在文件根布局与 Toolbar 中添加 android:fitsSystemWindows="true",这个很重要,可以使背景图片延伸至状态栏...图片作为布局背景沉浸样式 ? 图片作为布局背景样式 ? 图片被拉伸 图片作为布局背景的方式比较简单,方式与公共的相同,只是不需要 Toolbar 而已。...,就是折叠布局 CollapsingToolbarLayout 折叠后的效果也是沉浸式状态,可以固定折叠后的状态,但是并不建议这样处理,只是偶然想到而已,各位有兴趣可以研究一下。
沉浸式算是目前Android行业比较流行的一种App设计风格,将菜单栏北京设置为导航栏的颜色,感觉顶部状态栏像是被入侵了一样,因此称为沉浸式菜单栏。本文将介绍三种方式去实现沉浸式状态栏。 ?...三种方式实现沉浸式状态栏 首先看下第一种方式 系统的方式沉浸式状态栏实现 步骤一 当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT...步骤二 布局加入: android:clipToPadding="true" 我们看下activity和布局文件 FirstActivity.java: /** * 沉浸式状态栏...android:textSize="24dp" android:background="@color/mask_tags_1" android:text="你好,沉浸式状态栏...实现沉浸式状态栏 * */ private void initState() { //当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏 if (
instanceof ViewGroup) { //调用此方法系统会默认设置paddingTop,由于调用此方法之前add了一个paddingTop高度的view用于沉浸式状态栏...* * @param activity 需要设置的activity * @param color 状态栏颜色值 * @param...statusBarAlpha 状态栏透明度 */ public static void setColor(Activity activity, @ColorInt int color...instanceof ViewGroup) { //调用此方法系统会默认设置paddingTop,由于调用此方法之前add了一个paddingTop高度的view用于沉浸式状态栏...* * @param activity 需要设置的activity * @param color 状态栏颜色值 * @param alpha 透明值
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //沉浸式状态栏
说起来,在不知不觉中,我竟然凑成了这沉浸式状态栏三部曲。 其实最开始的时候,我主要是因为工作上的原因想要在Android版的Edge浏览器上实现首页图片沉浸式的功能。...实现沉浸式之后的效果如下图所示: 不过,有朋友在评论区提出了这样一个疑问: 确实,这是一个做沉浸式功能时比较容易被忽略的问题。...如果背景图片的颜色和状态栏图标的颜色非常接近的话,那么的确会造成状态栏图标看不清楚的情况。 这里我举了一些沉浸式效果做得不太好的案例,具体是什么App我就不提了。...可以看到,这些App虽然实现了沉浸式状态栏的效果,但是由于状态栏上的图标变得难以看清,所以最终效果可能反而不好。 但是,Edge浏览器是不会存在这种问题的。为什么呢?...这就是我在上篇文章中说的,在实现沉浸式状态栏时运用了一些小黑科技。那么借助这些小黑科技,我终于可以凑成这沉浸式状态栏三部曲了。 话不多说,下面技术开讲。
记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解。...其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发起的。因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersive Mode)这种说法。...而有些人在没有完全了解清楚沉浸模式到底是什么东西的情况下,就张冠李戴地认为一些系统提供的状态栏操作就是沉浸式的,并且还起了一个沉浸式状态栏的名字。...这样看上去就有点沉浸式效果的模样了。 虽说这才是正统的沉浸式含义,但有些朋友可能想实现的就是饿了么那样的状态栏效果,而不是直接把整个系统状态栏给隐藏掉,那么又该如何实现呢?...可以看到,类似于饿了么的状态栏效果就成功实现了。 再声明一次,这种效果不叫沉浸式状态栏,也完全没有沉浸式状态栏这种说法,我们估且可以把它叫做透明状态栏效果吧。
Google允许开发者在Android 4.4以上设置状态栏透明或半透明,布局填充全屏;而在5.0以上可直接设置状态栏颜色。...所以为了兼容4.4到5.0之间系统,整理步骤如下: 解决思路是:将状态栏设置为透明,标题栏填充全屏,判断4.4以上标题栏高度为原设计高度+状态栏高度,标题栏设置内距上边距为状态栏高度;如果是4.4以下则使用原设计高度
虚拟按键是是跑到最下面了,我那个沉浸式状态栏是怎么回事??...还有那个虚拟按键居然是透明的,而且那么丑 然后网上又有人说,把XML里面的两个属性去掉,还有把那个沉浸式状态栏的属性也去掉 android:fitsSystemWindows="true"...这句也要注释掉 // activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 去掉这句 防止沉浸式状态栏与虚拟按键冲突...// activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 去掉这句 防止沉浸式状态栏与虚拟按键冲突...至于我的沉浸式状态栏会变色,是根据Tablayout来设置的
近期发现个问题当你在API19以上定义沉浸式风格的UI时,可能会定义整个App的Theme为: true
需求: 手机app ,当打游戏或者全屏看视频的时候会发现这时候手机顶部的状态栏是不显示的,当我们从手机顶端向下进行滑动或手机底端向上滑动的时候,状态栏会显示出来,如果短暂的几秒时间没有操作的话,...状态栏会再次隐藏。... if (hasFocus && Build.VERSION.SDK_INT >= 19) { // 如果有焦点,说明当前与用户交互 并且SDK_INT>=19 只有Android4.4+才支持沉浸式效果...注: 和Activity全屏显示的区别在于,如果手机有虚拟导航栏(即虚拟后退、home键),则全屏会一直显示,而上述方法,导航栏和状态栏同步显示,上述需求则用全屏实现效果不对。
早期的Android版本姑且不提,Android迟至4.4才开始支持沉浸式状态栏,编码的时候通过Window对象的setAttributes方法来设置窗口属性的标志位。...具体的实现代码如下所示: // Android4.4的沉浸式状态栏写法 Window window = activity.getWindow(); WindowManager.LayoutParams...详细的标志位设置代码如下所示: // Android5.0之后的沉浸式状态栏写法 Window window = activity.getWindow();...如此一来,状态栏的悬浮和恢复操作便是可逆的了,如果移除主页面的顶端空白,状态栏就产生悬浮效果;如果添加主页面的顶端空白,状态栏就恢复原状。...先将这个冒牌状态栏(其内部没有别的控件)染上开发者指定的颜色,然后与系统自带的状态栏重合,于是乎偷梁换柱仿佛给状态栏换了一件衣裳。
领取专属 10元无门槛券
手把手带您无忧上云