Android 沉浸式全屏 Android 4.4 带来了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏、 虚拟按键动态隐藏, 应用可 以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种..., 应用可以占据屏幕的全部空间, 当用户触摸屏幕的任何部分时, 会自动退出全屏模 式, 这种模式比较适用于视频播放器类应用。..., 应用占据屏幕的全部空间, 只有当用户从屏幕的上方边沿处向下划动时, 才会退出沉浸 模式, 用户触摸屏幕其它部分是, 不会退出该模式, 这种模式比较适用于阅读器、 杂志类应用。...因此, 这种全屏模式使用与游戏、 绘 图类应用。 ?...根据 Android 开发文档中提到, 应用在使用沉浸模式时最好将 ActionBar 设置为 Overlay 模式, 具体设置可以参考这里: https://developer.android.com
下面就来分析一下,APP层的API如何影响SystemUI的显示的,并一步步解开所谓沉浸式与全屏的原理,首先看一下如何更改状态栏颜色。...实际应用中经常将状态栏或者导航栏设置为透明色:即想要沉浸式体验,这个时候背景颜色View就不在被绘制,但是,默认样式下DecorView的内容绘制区域并未扩展到状态栏、或者导航栏下面(TRANSLUCENT...DecorView内容区域的扩展与fitsystemwindow的意义 fitSystemWindow属性可以让DecorView的内容区域延伸到系统UI下方,防止在扩展时被覆盖,达到全屏、沉浸等不同体验效果...沉浸式全屏 如上图:由于背景透明,所以状态栏与导航栏背景色View都没有被添加,其次,由于设置了View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION...WindowInsets 作者:看书的小蜗牛 原文链接: 全屏、沉浸式、fitSystemWindow使用及原理分析:全方位控制“沉浸式”的实现 仅供参考,欢迎指正
说起来,在不知不觉中,我竟然凑成了这沉浸式状态栏三部曲。 其实最开始的时候,我主要是因为工作上的原因想要在Android版的Edge浏览器上实现首页图片沉浸式的功能。...对于Android版的Edge浏览器而言,首页图片的沉浸式一直是部分网友长久以来的呼声,经过我的各种攻坚和踩坑之后,终于将这个功能完成了。...实现沉浸式之后的效果如下图所示: 不过,有朋友在评论区提出了这样一个疑问: 确实,这是一个做沉浸式功能时比较容易被忽略的问题。...可以看到,这些App虽然实现了沉浸式状态栏的效果,但是由于状态栏上的图标变得难以看清,所以最终效果可能反而不好。 但是,Edge浏览器是不会存在这种问题的。为什么呢?...这就是我在上篇文章中说的,在实现沉浸式状态栏时运用了一些小黑科技。那么借助这些小黑科技,我终于可以凑成这沉浸式状态栏三部曲了。 话不多说,下面技术开讲。
好了废话不多说了,沉浸式状态栏现在已经非常普及了,不然请自行脑补一个画面(主题是蓝色的界面搭配白色,后来头顶冒出来一块红色的系统自带状态栏, 那画风。。。。)...沉浸式状态栏如下 : 再来一张 其实沉浸式状态栏不仅仅指的是顶部的状态栏,基于手机的不同,还有底部的手机也可以改成类似的 ,前提是手机得有这种底部的按钮: 如下 效果介绍完了,接下来就是实现了...如果是4.4之前版本的手机的话,是不会产生沉浸式状态栏的效果的, 而且部分手机会已经帮助你实现了,我这里是乐视2 版本是 6.0 已经帮我实现了部分界面的沉浸式; 代码片段 ; /**...* 沉浸式状态栏 * 当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏 */ private void initState() { if (Build.VERSION.SDK_INT...注释即为使用默认的效果 } } 然后将这份代码放入你的BaseActivity中去,记得是onCreate方法中: 然后去挨个配置 ,这两行代码写在每一个要使用沉浸式的布局里
android:windowTranslucentNavigation表示是否要填充底部的状态栏区域 这两种样式的目的就是默认让应用的内容放置到系统栏的下边,如果仅仅想扩展背景样式到系统栏下边,则需要设置...android:fitsSystemWindows为true, 会增加试图的Pading值让你的布局恢复正常大小,并且可以将背景扩大。...Android系统大于等于4.4的系统才执行沉浸式的功能 if (android.os.Build.VERSION.SDK_INT > 18) { Window window...(ViewGroup) getWindow().getDecorView(); view.addView(textView); } //开启全屏模式...View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } //取消全屏模式
前言 Android沉浸式体验有几个注意点 Android4.4(api19)及以上的版本才支持 Android5.0(api21)及以上的版本状态栏多了一个半透的黑色层 Android5.0(api21...values-v21是因为 Android5.0(api21)的黑色层通过style去掉后 应用切出去后再切进来后会再次出现 所以用代码去除 values文件夹下的styles.xml 的方式是建了适配api19前后的两个layout文件直接添加到了页面中 layout文件夹下的zj_statusbar.xml <?...="match_parent" android:layout_height="0dp"> layout-19文件夹下的zj_statusbar.xml..."> 不建议用以下方式(在有侧滑的时候有问题) android:fitsSystemWindows="true" android:clipToPadding="true"
此方案可以兼容信号栏目+导航栏,工作忙,没时间解释了,直接看代码:在Activity的onCreate里调用:window.decorView.systemUiVisibility =...View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION// 修改信号栏背景颜色window.statusBarColor = android.graphics.Color.parseColor...("#20FF0000")// 修改导航栏背景颜色window.navigationBarColor = android.graphics.Color.parseColor("#20FF0000")如果不想进行代码侵入太严重就在...View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // 修改信号栏背景颜色 window.statusBarColor = android.graphics.Color.parseColor...("#20FF0000") // 修改导航栏背景颜色 window.navigationBarColor = android.graphics.Color.parseColor("#20FF0000
根据百度百科上的定义,沉浸式就是要给用户提供完全沉浸的体验,使用户有一种置身于虚拟世界之中的感觉。 比如说现在大热的VR就是主打的沉浸式体验。...这才是沉浸式模式的真正含义,而所谓的什么沉浸式状态栏纯粹就是在瞎叫,完全都没搞懂“沉浸式” 这三个字是什么意思。 不过虽然听上去好像是很高大上的沉浸式效果,实际看上去貌似就是将内容全屏化了而已嘛。...没错,Android沉浸式模式的本质就是全屏化,不过我们今天的内容并不仅限于此,因为还要实现饿了么那样的状态栏效果。那么下面我们就开始来一步步学习吧。...这次看上去好像终于是完全全屏化了,但其实上这离真正的沉浸式模式还差得比较远,因为在这种模式下,我们触摸屏幕的任意位置都会退出全屏。 ? 这显然不是我们想要的效果,因此这种模式的使用场景比较有限。...过一段时间后如果没有任何操作,状态栏和导航栏又会自动隐藏起来,重新回到全屏状态。 这就是最标准的沉浸式模式。
做APP开发的过程中,有很多时候,我们需要实现类似于下面这种沉浸式的体验。 一开始接触的时候,似乎大家都会觉这种体验实现起来,会比较困难。...底部有一个控件,随着列表的向上滑动,它退出视角范围,以便于给出更多的空间来展示列表,其实整个沉浸式体验都是为了给列表留出更多的空间来展示。...3、ViewPager推到actionbar下面就不让在推了 这个其实需要你CollapsingToolbarLayout里面有一个子view是要使用pin模式的,那么这个子view是谁,显然就是那个toolbar...可以看到,底部的控件是覆盖在列表上的,列表向上滑动的时候,把他隐藏,就可以空出更多的控件看列表。...> 注:IGameRefreshLayout实际上就是封装的PullToRefreshView,IgameViewPager是我们封装的Viewpager,减少每次写Viewpager的套路代码。
和尚我最近正在处理客户端顶部沉浸式展示图片,借此整理了一下和尚自己研究测试的沉浸式状态栏。...沉浸式状态栏大家都很熟悉,即 APP 界面图片延伸到状态栏, 应用本身沉浸于状态栏,即顶部不会默认展示系统的黑条。和尚我技术有限,理解不透彻,仅分享一下自己应用测试中可以呈现的几种样式。 ?...和尚我用的是作为 Toolbar 背景图 background 方式处理,使用 ImageView 控件时还需要单独处理图片,并有部分拉伸的可能。 图片作为布局背景沉浸样式 ?...和尚我的解决方法是使用 layer-list 的 drawable,类似于启动页初始加载时的样式。 沉浸式展示效果一样,就是折叠布局 CollapsingToolbarLayout 折叠后的效果也是沉浸式状态,可以固定折叠后的状态,但是并不建议这样处理,只是偶然想到而已,
简单写一篇文章捕获一下焦点 Material Design风格的顶部和底部导航栏 Compose中Material Design风格的设计我们的做法如下: 1、使用Scafoold作为页面的顶级,Scafoold...(window, false)设置后页面布局顶到了状态栏的上面,因为我们需要用一个Spacer来填充状态栏,让我们的布局看起来正常点 代码 如下是封装的状态栏方法 @Composable fun TopBarView...状态 处理前: 处理后: 结论是经过我们的处理后解决了状态栏的遮挡 BottomBar设计 实现方式 因为使用ProvideWindowInsets包裹后底部导航栏顶到了底部,所以需要填充一个底部导航栏高度的...状态 处理前: 处理后: 结论是经过我们的处理后解决了底部导航栏的遮挡问题 状态栏和底部导航栏颜色的处理 状态栏和底部导航栏颜色设置 依赖 implementation "com.google.accompanist...如何处理内容部分超出底部导航栏的区域 使用WindowCompat.setDecorFitsSystemWindows(window, false)处理了页面后,Scafoold的内容区域也会被顶到底部导航栏的下方
,miui6发布会把他叫做沉浸式,之后大家就自然而然的接受了沉浸式这个名称,其实实际应该叫做Translucent Bar,即为透明状态栏。...实现沉浸式是分为两块,一块是android5.0以上,一块是android4.4,这两块实现原理完全不一样,在讲解原理之前先看几个概念,下面需要用到 View.SYSTEM_UI_FLAG_VISIBLE...View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。...状态栏字体颜色 沉浸式原理说完了,在看看状态栏字体颜色怎么去修改吧,在android 6.0以上系统为我们提供了相关的api来设置状态栏字体颜色,如下 if (Build.VERSION.SDK_INT...网上关于沉浸式的介绍铺天盖地,但是很少有人把它们封装起来,当开发者调用的时候还得自己去写大量代码,消耗大家时间。写这个库的目的就是方便大家的开发,解决大家在沉浸式方面出现的问题。
1 .FitsSystemWindows和ClipToPadding联合运用 我们找到DecroView中的id为content的Framelayout,添加一个高度为statusBar高度的控件,然后调用下面方法...void setRootView(Activity activity) { ViewGroup parent = (ViewGroup) activity.findViewById(android.R.id.content...用于沉浸式状态栏 childView.setFitsSystemWindows(true); //不影响滑动效果(如ListView)(滑动区还是整个...用于沉浸式状态栏 childView.setFitsSystemWindows(true); //不影响滑动效果(如ListView)(滑动区还是整个...,需要安卓6.0以上版本或者小米和魅族等部分厂商可以修改,6.0可以在主题中设置 android:windowLightStatusBar">true 只有两种模式
此篇文章主要讲解关于沉浸式状态栏,程序全屏和分清状态栏、ActionBar、ToolBar 的一些知识内容。主要是讲解如何适配状态栏。...关于沉浸式和透明式概念说明 在谷歌官方中: 在 Android 4.4 Google 引入了可以在阅读电子书、玩游戏、看电影时支持全屏模式(Immersive Mode 沉浸模式),同时也支持更改修改状态栏的颜色...可以知道在官方是根本没有 沉浸式状态栏 这种说法的。只有 沉浸模式 就是其实就是出于全屏状态。所谓的 ”沉浸式状态栏“,类似于下面图的样子: ?...上面也说了这种错误的叫法是不对的,没有沉浸式状态栏 ,这种样式只是将内容 UI 设置成了全屏,把状态栏设置成了透明。...screnn_stable.png 5.沉浸模式 // 所谓沉浸模式就是一开始我们的 UI 布局是全屏的,状态栏和虚拟导航键也是隐藏的,当我们需要的系统 UI 的时候,从状态栏的位置下拉就可以出现系统
最近在写自己的小东西的时候,遇到了一个Bug,就是沉浸式转态栏与华为虚拟按键的冲突的问题。...虚拟按键是是跑到最下面了,我那个沉浸式状态栏是怎么回事??...还有那个虚拟按键居然是透明的,而且那么丑 然后网上又有人说,把XML里面的两个属性去掉,还有把那个沉浸式状态栏的属性也去掉 android:fitsSystemWindows="true"...); 去掉这句 防止沉浸式状态栏与虚拟按键冲突 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return...至于我的沉浸式状态栏会变色,是根据Tablayout来设置的
“沉浸播放式”这个概念是我从Android开发里面的沉浸式引申过来的一个概念,沉浸式其实就是隐藏页面顶部的status bar和底部的navigation bar之后呈现出来的页面,一般用户很容易把沉浸式状态栏和透明化状态栏混为一谈...,因为video是在最上一级的,但是两种方式例外,一个是微信把你们的域名加入白名单,这种可以在Android手机的video上随意放置dom元素,IOS本身没有这个限制,另一种更为通用的方式是用微信x5...内核的同层播放模式,这种模式有两种好处: 1、去除了右上角讨厌的”全屏”按钮 2、真正实现了x5内核下的沉浸式播放,我们看到目前的实现在微信上还是带有浏览器的titleBar的 在x5内核的环境下实现同层播放很简单...同层播放模式下的效果 确实是真正意义上的沉浸式播放,如果你的app里面webview用的也是x5内核那么这个页面也能在app上达到同样的效果,但是这种同层播放依然有无法解决的问题,首先这个全屏模式会重新计算宽高...,触发视口大小变化,也就是说用户视觉上会有一个视口变化的过程,其次,同层播放模式虽然没有了”全屏”按钮,但是左上角的按钮用于退出沉浸式全屏,右上角的按钮点开是分享,分享的内容不可定制,固定位当前页面的title
如果移动端访问不佳,欢迎使用 ==> Github 版 通过代码动态切换页面的着色模式和全屏模式,兼容 Android 4.4 + 。...本文假设读者已经了解着色模式和全屏模式(沉浸模式)。...背景 公司的 APP 设计图仅有 iOS 版的,对于 Android 平台,它整体算是着色模式,但是在个人页面是全屏模式(沉浸模式),实现设计图时,我使用的是一个 Activity + 四个 Fragment...实际上,这种情况下的『着色模式』是在全屏模式下模拟出来的,并不是真正意义上的着色模式。...相关资料: Android-transulcent-status-bar 由沉浸式状态栏引发的血案 PS:你可以通过下面的方式和我联系 微博:cafeting Github: likfe CSDN:
但是直到 Android4.4,我们才能真正意义上的实现沉浸式状态栏。...,它可以使你的 app 实现真正意义上的全屏体验。...1.1.1 FLAGTRANSLUCENTSTATUS 当沉浸式全屏模式启用的时候,你的 activity 会继续接受各类的触摸事件。...展示了各种不同的“沉浸式”状态: ? 在上图中: 非沉浸模式 —— 展示了应用进入沉浸模式之前的状态。也展示了设置 IMMERSIVE 标签后用户滑动展示系统栏的状态。...通过以上就可以实现 Android 4.4 上的沉浸式状态栏。
https://blog.csdn.net/lyhhj/article/details/46547273 最近好多app都已经满足了沉浸式通知栏,所谓沉浸式通知栏:就是把用来导航的各种界面操作空间隐藏在以程序内容为主的情景中...而最新安卓4.4系统的通知栏沉浸模式就是在软件打开的时候通知栏和软件顶部颜色融为一体,这样不仅可以使软件和系统本身更加融为一体。...就是手机的通知栏的颜色不再是白色、黑色简单的两种了,本人用的小米4手机,米4手机中的自带软件都支持沉浸式通知栏, 举个例子:大家可以看一下自己的qq,它的标题的背景颜色是蓝色的,那么通知栏也会变成蓝色。...下面给大家说一下怎么让自己的app支持沉浸式通知栏: github上已经有大牛研究出来了,说一下怎么实现的: 首先下载SystemBarTint,将里面的SystemBarTintManager.java...winParams.flags &= ~bits; } win.setAttributes(winParams); } 复制代码 这样就可以完美实现沉浸式通知栏的
image.png △ 请点击图片放大查看 右侧的两个解决方案都是 Android 平台为应用提供的沉浸模式 (immersive mode)。那问题来了: 什么是沉浸模式? 什么是沉浸模式?...沉浸模式是一种让内容全屏呈现的方式,用来隐藏系统栏,从而确保应用拥有最大的屏幕空间。此外,它还提供了防误操作的功能 (比如意外使用手势离开应用),特别适合在游戏中采用。...沉浸模式分为两种: 非粘性沉浸模式: 用户可以通过在系统栏上滑动来退出沉浸模式。 粘性沉浸模式: 用户可以通过在系统栏上滑动来暂时退出沉浸模式。...非粘性沉浸模式 大家在上面的流程图中可能已经看到,非粘性 (non-sticky) 沉浸模式非常适合需要全屏显示但不需要在屏幕边缘附近使用精确滑动手势的 UI。...常见的例子包括全屏视频播放和照片浏览等。 就手势导航而言,非粘性沉浸模式与其在早期版本的 Android 上的工作方式一致。
领取专属 10元无门槛券
手把手带您无忧上云