Android实现沉浸式状态栏功能
作者:季风__ 发布时间:2022-10-25 23:19:36
标签:Android,沉浸式,状态栏
Android中实现沉浸式状态栏的功能,供大家参考,具体内容如下
1. 先上效果图,实现沉浸式状态栏有两种方式,一种是通过写Theme主题的方式,另一种是写代码的方式。若要使多个页面出现沉浸式状态栏,则使用主题的方式更方便,如果只要使单个页面出现,则使用代码方式更好!当然了,看个人喜好而去。
2. 先来介绍写主题的方式
2.1 先在res包下新建values-v19和values-v21两个包,为了兼容Android高低版本
2.2 然后分别在包中新建styles.xml文件
2.2.1 values-v19包中styles.xml文件中的内容为:
<style name="AppTheme.TransparentStausBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item> //取消系统默认的actionBar
<item name="windowNoTitle">true</item> //取消actionBar的标题
<item name="android:windowTranslucentStatus">true</item> //允许页面可以拉伸到顶部状态栏并且定义顶部状态栏透明,安卓4.4才有
<item name="android:windowTranslucentNavigation">true</item>//设置虚拟键透明
</style>
2.2.2 values-v21包中styles.xml文件中的内容为:
<style name="AppTheme.TransparentStausBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item> //取消系统默认的actionBar
<item name="windowNoTitle">true</item> //取消actionBar的标题
<item name="android:windowTranslucentStatus">false</item> //允许页面可以拉伸到顶部状态栏并且定义顶部状态栏透明,安卓4.4才有
<item name="android:windowTranslucentNavigation">true</item> //设置虚拟键透明
<item name="android:statusBarColor">@android:color/transparent</item> //设置状态栏的颜色为透明
</style>
2.2.3 在values包中的styles.xml文件中添加一个空的,起到后备作用
<style name="AppTheme.TransparentStausBar" parent="AppTheme">
</style>
2.2.4 最后一点需要在对应的布局文件中添加,然后在AndroidManifest.xml引用
android:fitsSystemWindows="true"
写主题的方式就算完成了
3.再来介绍一下写代码的方式
private void initBar() {
getWindow().requestFeature(Window.FEATURE_NO_TITLE); //取消状态栏的标题
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//判断SDK的版本是否>=21
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); //允许页面可以拉伸到顶部状态栏并且定义顶部状态栏透名
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | //设置全屏显示
View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT); //设置状态栏为透明
window.setNavigationBarColor(Color.TRANSPARENT); //设置虚拟键为透明
}
ActionBar actionBar = getSupportActionBar();
actionBar.hide(); //将actionBar隐藏
}
写代码的方式也完成了
Tip: 小白,写得不好请见谅。若有不对的地方请留言。
来源:https://blog.csdn.net/weixin_43796132/article/details/102250632


猜你喜欢
- 一、简介用法ScrollView大致相同二、方法1)HorizontalScrollView水平滚动控件使用方法1、在layout布局文件的
- 以前公司的产品已经上线20多年了,主要是维护,也就是改bug。每周我们Team会从Jira上拿我们可以改的bug,因为每个团队负责的业务范围
- 一 前言学习微服务要从基础的架构学起,首先你要有个微服务的概念才能学习对吧!!如果你都不知道啥是微服务,就一头扎进去学习,你自己也觉得自己也
- Android横竖屏要解决的问题应该就两个:一。布局问题;二。重新载入问题。1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在
- 一、显式锁什么是显式锁?由自己手动获取锁,然后手动释放的锁。有了 synchronized(内置锁) 为什么还要 Lock(显示锁)?使用
- 前言最近公司要把百度地图集成的项目中,于是我就研究了一天百度地图的SDK,当前的版本:Android SDK v3.0.0 。 虽然百度地图
- yml与properties其实yml和properties文件是一样的原理,且一个项目上要么yml或者properties,二选一的存在。
- 只使用try和finally不使用catch的原因和场景JDK并发工具包中,很多异常处理都使用了如下的结构,如AbstractExecuto
- 如何用idea创建web框架和配置struts 创建好一个project右键project,选择第二项选中Web Application,然
- 一、新建项目我们这次直接从IEDA创建项目,具体配置如下,还是万年的Java8。二、docker-compose 配置mongoDBdock
- 一、输入输出流对象cout:标准输出流cerr:标准出凑 和cout(只是用于如果是错误时要输出的)cin :&nb
- 一、负载均衡负载均衡(Load Balance): 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞
- java的jar是一个打包工具,用于将我们编译后的class文件打包起来,这里面主要是举一个例子用来说明这个工具的使用。在C盘下的temp文
- Spring发布了一个新工具Spring Native Beta,用于将现有的Spring Boot应用程序(用Java或Kotlin编写)
- 为什么要使用路由在之前我们的代码中,页面跳转使用的代码如下所示:Navigator.of(context).push( Mate
- 一、什么是锁擦除锁擦除是指虚拟机即时编译器(JIT)在运行时,对一些代码上要求同步,但是被检测到不可能存在共享数据竞争的锁进行擦除。锁擦除的
- 这篇文章主要介绍了Spring自动装配Bean实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 1 关于自动内存管理Java是由jvm来管理内存,包括自动分配以及自动回收,因此它不容易出现内存泄漏和内存溢出问题。C/C++,由程序员手动
- 本文实例讲述了Java获取时间年、月、日的方法。分享给大家供大家参考。具体实现方法如下:package com.date.demo; imp
- 依赖倒置原则(DIP)定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类