Android 沉浸式适配 4.4+ 默认的主题 (/values/styles.xml) 兼容Android 4.4 (/values-v19/styles.xml) android:windowTranslucentStatus">true android:windowTranslucentNavigation...--Android 5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色--> android:statusBarColor">@android:color/transparent...android:theme="@style/BaseTheme"
前言 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
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 只有两种模式
和尚我最近在调整页面状态栏的效果,主要包括沉浸式状态栏和伪沉浸状态栏(同事唠嗑给定义的玩的)。...前段时间整理过一篇 Android 沉浸式状态栏的多种样式,现在和尚我在稍微的补充一下,都是在日常应用中测试整理的。...---- 非 Toolbar 标题栏 就和尚我接触的项目中根据业务不同,不是所有的标题栏都是 Toolbar 标题栏样式,很多是自定义的标题栏样式,为了效果统一,和尚我的解决方案是修改顶部状态栏的颜色为程序的主题色...,戏称为伪沉浸式状态栏。...#setStatusBarColor,此时不建议用 @TargetApi(Build.VERSION_CODES.KITKAT) 这种方式,这样会固定一个版本,且顶部状态栏有时会修改无效,建议用如上 if
本文是用于设配SDK4.4到5.0的沉浸式导航栏适配(4.4下面的实现不了沉浸式),上次说到适配沉浸式状态栏时,为DecorView添加一个View可以是实现,导航栏也同样,但是不是所有手机都有导航栏,...所以我们先要判断手机有没有导航栏 public static boolean hasNavigationBar(Context context) { WindowManager...windowManager.getDefaultDisplay().getMetrics(contentMetrics); //如果竖屏状态下,物理屏幕的高度比内容屏幕的高度高,则含有导航栏,...int statusBarHeight = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android...} //上面方法获取不到的话,使用反射资源获取 return getNavigationBarHeightByAndroid(context, "com.android.internal.R
先上图看效果 这是Nexus 4.4上的展示效果 ? 这是Nexus 5.0上的展示效果 ?...Google允许开发者在Android 4.4以上设置状态栏透明或半透明,布局填充全屏;而在5.0以上可直接设置状态栏颜色。...所以为了兼容4.4到5.0之间系统,整理步骤如下: 解决思路是:将状态栏设置为透明,标题栏填充全屏,判断4.4以上标题栏高度为原设计高度+状态栏高度,标题栏设置内距上边距为状态栏高度;如果是4.4以下则使用原设计高度...> android:statusBarColor">@android:color/transparent 二、在AndroidManiFest...文件中设置对应Activity的Theme android:name=".activity.StatusBarActivity" android:theme="@style
好了废话不多说了,沉浸式状态栏现在已经非常普及了,不然请自行脑补一个画面(主题是蓝色的界面搭配白色,后来头顶冒出来一块红色的系统自带状态栏, 那画风。。。。)...沉浸式状态栏如下 : 再来一张 其实沉浸式状态栏不仅仅指的是顶部的状态栏,基于手机的不同,还有底部的手机也可以改成类似的 ,前提是手机得有这种底部的按钮: 如下 效果介绍完了,接下来就是实现了...如果是4.4之前版本的手机的话,是不会产生沉浸式状态栏的效果的, 而且部分手机会已经帮助你实现了,我这里是乐视2 版本是 6.0 已经帮我实现了部分界面的沉浸式; 代码片段 ; /**...* 沉浸式状态栏 * 当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏 */ private void initState() { if (Build.VERSION.SDK_INT...注释即为使用默认的效果 } } 然后将这份代码放入你的BaseActivity中去,记得是onCreate方法中: 然后去挨个配置 ,这两行代码写在每一个要使用沉浸式的布局里
="android:windowTranslucentNavigation">true 其中 android:windowTranslucentStatus表示是否要填充顶部的状态栏区域...android:windowTranslucentNavigation表示是否要填充底部的状态栏区域 这两种样式的目的就是默认让应用的内容放置到系统栏的下边,如果仅仅想扩展背景样式到系统栏下边,则需要设置...系统大于等于4.4的系统才执行沉浸式的功能 if (android.os.Build.VERSION.SDK_INT > 18) { Window window = ...,然后给系统通知栏设置我们需要的颜色。...ViewGroup) getWindow().getDecorView(); view.addView(textView); } //开启全屏模式
4.4 以上要做所谓沉浸式,其实不是真正意义上的沉浸式,只是一种透明状态栏。 而由于 Android API 的不同,需要考虑 4.4、5.0、6.0 前后的不同。...适配 4.4 4.4 版本需要透明状态栏,将内容往下移,然后再加一个和状态栏一样大小的 View 覆盖到状态栏上面。...rootView = ((ViewGroup)decorView.findViewById(android.R.id.content)).getChildAt(0); window.addFlags(...,但某些 Activity 要自己单独的样式,又创建了一个对象,结果专门做沉浸的这个类被构造了两遍,导致 paddingTop 计算错误。...后来考虑将颜色和图片的逻辑分开,因为有图片时要重置的和只是改状态栏颜色的不一样,放一起如果只是改状态栏颜色会走大量无意义的逻辑,当然 4.4 版本也是要将内容往下,也要特殊考虑。
Android沉浸式效果(隐藏标题栏) 设置全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN
前言 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,和尚我借用这种方式实现与以前一样的含有图片的沉浸式状态栏样式。
其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发起的。因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersive Mode)这种说法。...而有些人在没有完全了解清楚沉浸模式到底是什么东西的情况下,就张冠李戴地认为一些系统提供的状态栏操作就是沉浸式的,并且还起了一个沉浸式状态栏的名字。...没错,Android沉浸式模式的本质就是全屏化,不过我们今天的内容并不仅限于此,因为还要实现饿了么那样的状态栏效果。那么下面我们就开始来一步步学习吧。...真正的沉浸式模式 虽说沉浸式导航栏这个东西是被很多人误叫的一种称呼,但沉浸式模式的确是存在的。那么我们如何才能实现像海岛奇兵以及爱奇艺那样的沉浸式模式呢?...需要注意的是,只有在Android 4.4及以上系统才支持沉浸式模式,因此这里也是加入了if判断。
背景 在使用某APP的过程中发现,该APP对PopupWindow的沉浸式支持并不好,在使用PopupWindow的时候,状态栏会变成纯白色,看不到时间信号等等。如下图所示 ?...APP弹出菜单时候状态栏底色纯白 而正常的状态栏应该如下图所示 ? 正常情况下状态栏显示 问题追踪 看到这个之后觉得顶部看不到时间、信号神马的非常不舒服,于是上Google查了一下原因。...Window 这样就能可以实现状态栏在PopupWindow/Dialog弹出的时候,也可以正常显示了,在自己做的Demo中也证实了这一点 解决办法 在PopupWindow/Dialog展示(show...)之前,调用setFocusable(false),这样在弹出PopupWindow的时候没有焦点,就不会影响沉浸式状态栏的显示了。...遗留问题 因为Android底部有虚拟按键,上网查资料发现都说需要设置Popup的WindowInputMethod,但是发现和预期不一样,会导致虚拟按键的位置有问题,所以,暂时没有解决方案,最后还是通过
和尚我最近正在处理客户端顶部沉浸式展示图片,借此整理了一下和尚自己研究测试的沉浸式状态栏。...沉浸式状态栏大家都很熟悉,即 APP 界面图片延伸到状态栏, 应用本身沉浸于状态栏,即顶部不会默认展示系统的黑条。和尚我技术有限,理解不透彻,仅分享一下自己应用测试中可以呈现的几种样式。 ?...)、 values-v19 (处理 Android4.4 版本) 和 values-v21 (处理 Android5.0以后的半透明); values style.xml <style name="ToorbarTheme...正常纯色 Toolbar 样式 纯色 Toolbar 在使用中一般会将顶部状态栏设置与 Toolbar 背景色一致; val window = window window.addFlags(...Tips1:还有一种样式与沉浸式展示效果一样,就是折叠布局 CollapsingToolbarLayout 折叠后的效果也是沉浸式状态,可以固定折叠后的状态,但是并不建议这样处理,只是偶然想到而已,
TabLayout是android.support.design里的一个控件,使用它可以很方便的做出顶部导航和底部导航。类似于这样的,能设置选中时字体的颜色和选中时的图片。 ? ?...="0dp" android:layout_weight="1" /> 顶部是一个TabLayout,可以设置background。...TitleFragmentPagerAdapter adapter = new TitleFragmentPagerAdapter(getFragmentManager(), fragments, new String[]{"第一栏"..., "第二栏", "第三栏"}); viewpager.setAdapter(adapter); tabLayout.setupWithViewPager(viewpager.../nav_home" android:state_selected = "false" /> OK,以上做完就可以了,带图片的底部导航栏就做好了。
简单写一篇文章捕获一下焦点 Material Design风格的顶部和底部导航栏 Compose中Material Design风格的设计我们的做法如下: 1、使用Scafoold作为页面的顶级,Scafoold...中承载topbar和bottombar分别作为顶部导航栏和底部导航栏。...包裹布局,使我们可以获取到状态栏和底部导航栏的高度(不包裹无法获取状态栏和底部导航栏高度) 4、手动处理顶部和底部导航栏让页面适应屏幕 界面设计 TopBar设计 实现方式 因为使用WindowCompat.setDecorFitsSystemWindows...(window, false)设置后页面布局顶到了状态栏的上面,因为我们需要用一个Spacer来填充状态栏,让我们的布局看起来正常点 代码 如下是封装的状态栏方法 @Composable fun TopBarView...ui状态 处理前: 处理后: 结论是经过我们的处理后解决了底部导航栏的遮挡问题 状态栏和底部导航栏颜色的处理 状态栏和底部导航栏颜色设置 依赖 implementation "com.google.accompanist
Android 沉浸式全屏 Android 4.4 带来了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏、 虚拟按键动态隐藏, 应用可 以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种...Android 4.4 中提供了 IMMERSIVE 和 IMMERSIVE_STICKY 标记, 可以用这两个标记与 SYSTEM_UI_FLAG_HIDE_NAVIGATION 和 SYSTEM_UI_FLAG_FULLSCREEN..., 应用可以占据屏幕的全部空间, 当用户触摸屏幕的任何部分时, 会自动退出全屏模 式, 这种模式比较适用于视频播放器类应用。..., 应用使用屏幕的全部空间, 当用户从屏幕的上方边沿处向下滑动时, 也不会退出该 模式, 但是系统界面 (状态栏、 导航栏) 将会以半透明的效果浮现在应用视图之上 (如下图所示), 只有当用户点击系统界面上的控件时...根据 Android 开发文档中提到, 应用在使用沉浸模式时最好将 ActionBar 设置为 Overlay 模式, 具体设置可以参考这里: https://developer.android.com
= null) { actionBar.hide(); } 透明顶部状态栏 状态栏默认的颜色是绿色的,很丑,更改颜色可以在theme中修改对应主题的颜色。...true); tintManager.setStatusBarTintResource(colorId); } } /** * 状态栏亮色模式...,设置状态栏黑色文字、图标, * 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android * * @param activity * @return...* 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android * * @param activity * @param type 1:MIUUI...View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } } /** * 状态栏暗色模式
一、示例图: 二、代码图: 三、代码 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); //沉浸式状态栏
领取专属 10元无门槛券
手把手带您无忧上云