和尚我最近在调整页面状态栏的效果,主要包括沉浸式状态栏和伪沉浸状态栏(同事唠嗑给定义的玩的)。...前段时间整理过一篇 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:windowTranslucentNavigation">true 其中 android:windowTranslucentStatus表示是否要填充顶部的状态栏区域...android:windowTranslucentNavigation表示是否要填充底部的状态栏区域 这两种样式的目的就是默认让应用的内容放置到系统栏的下边,如果仅仅想扩展背景样式到系统栏下边,则需要设置...系统大于等于4.4的系统才执行沉浸式的功能 if (android.os.Build.VERSION.SDK_INT > 18) { Window window = ...View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } // 获取手机状态栏高度...> android="http://schemas.android.com/apk/res/android" > <gradient android:angle
4.4 以上要做所谓沉浸式,其实不是真正意义上的沉浸式,只是一种透明状态栏。 而由于 Android API 的不同,需要考虑 4.4、5.0、6.0 前后的不同。...rootView = ((ViewGroup)decorView.findViewById(android.R.id.content)).getChildAt(0); window.addFlags(...// ((ViewGroup)decorView.findViewById(android.R.id.content)).addView(view); ((ViewGroup)...还遇到过 setFitsSystemWindows 导致内容布局变化,如果不对每个 Activity 配置一次 android:configChanges="screenSize|screenLayout...,但某些 Activity 要自己单独的样式,又创建了一个对象,结果专门做沉浸的这个类被构造了两遍,导致 paddingTop 计算错误。
前言 Google的Material Design的发布让Android具备了更多的个性化元素,例如,“沉浸式”状态栏。问题来了,那么在低版本Android上可以用吗?...其实,在Android >= 4.4的版本中,都可以进行“沉浸式”状态栏适配的,只不过效果不太一样,Android >= 5.0 版本中设置更加简单,Android >= 4.4 但 Android 5.0+实现方法 参见文章:《Android L+ Theme 与 Toolbar 实例》 Android 4.4 实现方法 1.使用开源库SystemBarTint 2.然后在BaseActivity
前言 Android沉浸式体验有几个注意点 Android4.4(api19)及以上的版本才支持 Android5.0(api21)及以上的版本状态栏多了一个半透的黑色层 Android5.0(api21...以上 状态栏的黑色半透层 在重新切回应用时也不会被再次添上 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val window...WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) window.statusBarColor = Color.TRANSPARENT } 接下来就是设置状态栏的背景了...> android="http://schemas.android.com/apk/res/android" android:layout_width...android:background="@android:color/holo_blue_light" 这种方式首先最外层必须要设置为背景色 它会用该背景色来填充状态栏和虚拟按键栏 一个页面只有一个该属性会生效
和尚前些日子整理了两次小小的沉浸式状态栏的总结:Android 沉浸式状态栏的多种样式 和 Android 沉浸式状态栏以及伪沉浸式状态栏。...今天和尚我再稍稍补充一点,Java/Kotlin 代码中设置 LayerDrawable 方式实现沉浸式状态栏。...LayerDrawable 为图层叠加,对应 xml 中的 layer-list 层次化方式展示 Drawable,和尚我借用这种方式实现与以前一样的含有图片的沉浸式状态栏样式。
和尚我最近正在处理客户端顶部沉浸式展示图片,借此整理了一下和尚自己研究测试的沉浸式状态栏。...沉浸式状态栏大家都很熟悉,即 APP 界面图片延伸到状态栏, 应用本身沉浸于状态栏,即顶部不会默认展示系统的黑条。和尚我技术有限,理解不透彻,仅分享一下自己应用测试中可以呈现的几种样式。 ?...:fitsSystemWindows="true",这个很重要,可以使背景图片延伸至状态栏,当然在 Java 文件中设置一样的效果; 状态栏 Toolbar 样式一般不会在日常中使用,但是测试的过程中发现,分享给大家,其根本原因是主题中 android:windowFullscreen">true沉浸式展示效果一样,就是折叠布局 CollapsingToolbarLayout 折叠后的效果也是沉浸式状态,可以固定折叠后的状态,但是并不建议这样处理,只是偶然想到而已,
背景 在使用某APP的过程中发现,该APP对PopupWindow的沉浸式支持并不好,在使用PopupWindow的时候,状态栏会变成纯白色,看不到时间信号等等。如下图所示 ?...APP弹出菜单时候状态栏底色纯白 而正常的状态栏应该如下图所示 ? 正常情况下状态栏显示 问题追踪 看到这个之后觉得顶部看不到时间、信号神马的非常不舒服,于是上Google查了一下原因。...Window 这样就能可以实现状态栏在PopupWindow/Dialog弹出的时候,也可以正常显示了,在自己做的Demo中也证实了这一点 解决办法 在PopupWindow/Dialog展示(show...)之前,调用setFocusable(false),这样在弹出PopupWindow的时候没有焦点,就不会影响沉浸式状态栏的显示了。...遗留问题 因为Android底部有虚拟按键,上网查资料发现都说需要设置Popup的WindowInputMethod,但是发现和预期不一样,会导致虚拟按键的位置有问题,所以,暂时没有解决方案,最后还是通过
void setRootView(Activity activity) { ViewGroup parent = (ViewGroup) activity.findViewById(android.R.id.content...instanceof ViewGroup) { //调用此方法系统会默认设置paddingTop,由于调用此方法之前add了一个paddingTop高度的view用于沉浸式状态栏...void setRootView(Activity activity) { ViewGroup parent = (ViewGroup) activity.findViewById(android.R.id.content...instanceof ViewGroup) { //调用此方法系统会默认设置paddingTop,由于调用此方法之前add了一个paddingTop高度的view用于沉浸式状态栏...,需要安卓6.0以上版本或者小米和魅族等部分厂商可以修改,6.0可以在主题中设置 android:windowLightStatusBar">true 只有两种模式
一、示例图: 二、代码图: 三、代码 package com.example.administrator.myapplication; import android.graphics.Color;...import android.os.Build; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity...; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity...super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //沉浸式状态栏
记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解。...其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发起的。因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersive Mode)这种说法。...而有些人在没有完全了解清楚沉浸模式到底是什么东西的情况下,就张冠李戴地认为一些系统提供的状态栏操作就是沉浸式的,并且还起了一个沉浸式状态栏的名字。...没错,Android沉浸式模式的本质就是全屏化,不过我们今天的内容并不仅限于此,因为还要实现饿了么那样的状态栏效果。那么下面我们就开始来一步步学习吧。...隐藏状态栏 一个Android应用程序的界面上其实是有很多系统元素的,观察下图: ? 可以看到,有状态栏、ActionBar、导航栏等。
说起来,在不知不觉中,我竟然凑成了这沉浸式状态栏三部曲。 其实最开始的时候,我主要是因为工作上的原因想要在Android版的Edge浏览器上实现首页图片沉浸式的功能。...对于Android版的Edge浏览器而言,首页图片的沉浸式一直是部分网友长久以来的呼声,经过我的各种攻坚和踩坑之后,终于将这个功能完成了。...可以看到,这些App虽然实现了沉浸式状态栏的效果,但是由于状态栏上的图标变得难以看清,所以最终效果可能反而不好。 但是,Edge浏览器是不会存在这种问题的。为什么呢?...这就是我在上篇文章中说的,在实现沉浸式状态栏时运用了一些小黑科技。那么借助这些小黑科技,我终于可以凑成这沉浸式状态栏三部曲了。 话不多说,下面技术开讲。...Android系统其实给了我们API来控制状态栏图标的颜色,但是只能设置成黑、白这两种颜色,而不可以将状态栏图标改成五颜六色的样子。
虚拟按键是是跑到最下面了,我那个沉浸式状态栏是怎么回事??...还有那个虚拟按键居然是透明的,而且那么丑 然后网上又有人说,把XML里面的两个属性去掉,还有把那个沉浸式状态栏的属性也去掉 android:fitsSystemWindows="true"...); 去掉这句 防止沉浸式状态栏与虚拟按键冲突 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return...// activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 去掉这句 防止沉浸式状态栏与虚拟按键冲突...至于我的沉浸式状态栏会变色,是根据Tablayout来设置的
随着用户要求的不断提高,Android版本的不断升级,沉浸式状态栏似乎已经成为了每个App的必备功能。 ...首先要实现它我们得先理解他,状态栏不同于标题栏,状态栏是Android手机自带的,显示一些Android内置的信息。正常情况下位于我们标题栏上方,以黑色居多。...在笔者的使用中,沉浸式状态栏分为两种: 控制状态栏颜色,使状态栏和标题栏颜色相同或者相近。达到合二为一的效果。 ? 使我们开发部分顶进状态栏,与状态栏重合。...如何控制状态栏: 在Android中用Window类管理状态栏,我们将固定方法封装为StatusBarUtil。...我们的需求是实现沉浸式状态栏,并且我们同样不希望没个页面都要我们手动去设置一次,所以我们将在BaseActivity中实现。
近期发现个问题当你在API19以上定义沉浸式风格的UI时,可能会定义整个App的Theme为: android:windowTranslucentNavigation">true... android:windowTranslucentStatus">true android:fitsSystemWindows
沉浸式算是目前Android行业比较流行的一种App设计风格,将菜单栏北京设置为导航栏的颜色,感觉顶部状态栏像是被入侵了一样,因此称为沉浸式菜单栏。本文将介绍三种方式去实现沉浸式状态栏。 ?...三种方式实现沉浸式状态栏 首先看下第一种方式 系统的方式沉浸式状态栏实现 步骤一 当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT...android:text="你好,沉浸式状态栏"/> 接着看下第二种方式 实现思路,添加隐藏布局,然后我们动态的计算状态栏的高度,然后把这个高度设置成这个隐藏的布局的高度...实现沉浸式状态栏 * */ private void initState() { //当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏 if (...="true" android:text="你好,沉浸式状态栏" android:textSize="24dp"/> 好了,原来自己以为沉浸式状态栏听着好厉害
只好继续寻寻觅觅,又找到另一个电商App,它在Android6.0手机上也完美实现了状态栏悬浮效果,但是在Android4.4手机运行时仍然没能覆盖状态栏。...该电商App的首页截图如下所示,其中左图为Android6.0手机上的运行界面,此时状态栏浮在轮播图上面;右图为Android4.4手机的运行界面,此时状态栏依旧与轮播图泾渭分明。 ? ?...早期的Android版本姑且不提,Android迟至4.4才开始支持沉浸式状态栏,编码的时候通过Window对象的setAttributes方法来设置窗口属性的标志位。...具体的实现代码如下所示: // Android4.4的沉浸式状态栏写法 Window window = activity.getWindow(); WindowManager.LayoutParams...详细的标志位设置代码如下所示: // Android5.0之后的沉浸式状态栏写法 Window window = activity.getWindow();
需求: 手机app ,当打游戏或者全屏看视频的时候会发现这时候手机顶部的状态栏是不显示的,当我们从手机顶端向下进行滑动或手机底端向上滑动的时候,状态栏会显示出来,如果短暂的几秒时间没有操作的话,...状态栏会再次隐藏。...hasFocus); if (hasFocus && Build.VERSION.SDK_INT >= 19) { // 如果有焦点,说明当前与用户交互 并且SDK_INT>=19 只有Android4.4...+才支持沉浸式效果 View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility...注: 和Activity全屏显示的区别在于,如果手机有虚拟导航栏(即虚拟后退、home键),则全屏会一直显示,而上述方法,导航栏和状态栏同步显示,上述需求则用全屏实现效果不对。
Android 沉浸式全屏 Android 4.4 带来了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏、 虚拟按键动态隐藏, 应用可 以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种...注意: 这些标 记在Xamarin.Android 中被映射为 Android.Views.SystemUiFlags 枚举。..., 应用使用屏幕的全部空间, 当用户从屏幕的上方边沿处向下滑动时, 也不会退出该 模式, 但是系统界面 (状态栏、 导航栏) 将会以半透明的效果浮现在应用视图之上 (如下图所示), 只有当用户点击系统界面上的控件时..., 才会退出黏性沉浸模式。...根据 Android 开发文档中提到, 应用在使用沉浸模式时最好将 ActionBar 设置为 Overlay 模式, 具体设置可以参考这里: https://developer.android.com
领取专属 10元无门槛券
手把手带您无忧上云