Android 沉浸式状态栏

过时的API
  //设置默认隐藏虚拟按键,虚拟按键显示后为半透明protected open fun hideNavigationBarAndFullScreen() {val flags: Int// This work only for android 4.4+flags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {// This work only for android 4.4+// hide navigation bar permanently in android activity// touch the screen, the navigation bar will not showwindow.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) //虚拟按键透明(View.SYSTEM_UI_FLAG_LAYOUT_STABLEor View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATIONor View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREENor View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav// baror View.SYSTEM_UI_FLAG_FULLSCREEN // hide status baror View.SYSTEM_UI_FLAG_IMMERSIVE)//            flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION//                    | View.SYSTEM_UI_FLAG_IMMERSIVE//                    | View.SYSTEM_UI_FLAG_FULLSCREEN;} else {View.SYSTEM_UI_FLAG_HIDE_NAVIGATION}window.decorView.systemUiVisibility = flags}

上面这一大堆,全都是过时的api,当然也能用

新的方法
theme
  <style name="Goscam_AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="colorPrimary">@color/white</item><item name="colorPrimaryDark">@color/white</item><item name="colorAccent">@color/colorAccent</item><item name="android:textAllCaps">false</item><item name="android:textDirection">locale</item><item name="android:windowTranslucentStatus">true</item><item name="android:windowIsTranslucent">false</item><item name="android:windowDisablePreview">true</item><item name="android:windowTranslucentNavigation">false</item><item name="android:windowLightStatusBar">true</item></style>

theme是必不可少的

window
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {window.isNavigationBarContrastEnforced = false}window.statusBarColor = Color.TRANSPARENTwindow.navigationBarColor = Color.TRANSPARENTWindowCompat.setDecorFitsSystemWindows(window, true)

设置状态栏颜色,设置底部导航栏颜色

setDecorFitsSystemWindows

函数就是用来替换过时的函数 setSystemUiVisibility

setDecorfitsSystemWindows的解释

/*** Sets whether the decor view should fit root-level content views for* {@link WindowInsetsCompat}.* <p>* If set to {@code false}, the framework will not fit the content view to the insets and will* just pass through the {@link WindowInsetsCompat} to the content view.* </p>* <p>* Please note: using the {@link View#setSystemUiVisibility(int)} API in your app can* conflict with this method. Please discontinue use of {@link View#setSystemUiVisibility(int)}.* </p>** @param window                 The current window.* @param decorFitsSystemWindows Whether the decor view should fit root-level content views for*                               insets.*/public static void setDecorFitsSystemWindows(@NonNull Window window,final boolean decorFitsSystemWindows) {if (Build.VERSION.SDK_INT >= 30) {Api30Impl.setDecorFitsSystemWindows(window, decorFitsSystemWindows);} else if (Build.VERSION.SDK_INT >= 16) {Api16Impl.setDecorFitsSystemWindows(window, decorFitsSystemWindows);}}

可以看到函数内部已经做了版本适配

效果

分别是有导航栏和无导航栏的沉浸式效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479323.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天洑AIFEM软件将助力竞技机器人国际冠军战队再攀高峰

2023年底&#xff0c;烈鹏战队作为中国顶尖机器人队伍代表出征国际赛事Battle of Robots&#xff0c;经过与全球战队激烈竞争&#xff0c;取得国际赛场上5连胜的优秀战绩斩获国际冠军。 天洑智能结构仿真软件AIFEM与玄智科技的技术方案联合&#xff0c;基于烈鹏战队的冠军机器人…

网站常见的反爬手段及反反爬思路

摘要:介绍常见的反爬手段和反反爬思路&#xff0c;内容详细具体&#xff0c;明晰解释每一步&#xff0c;非常适合小白和初学者学习&#xff01;&#xff01;&#xff01; 目录 一、明确几个概念 二、常见的反爬手段及反反爬思路 1、检测user-agent 2、ip 访问频率的限制 …

Spring解决循环依赖

目录 什么是spring循环依赖 什么情况下循环依赖可以被处理&#xff1f; spring 如何解决循环依赖 创建A这个Bean的流程 答疑 疑问&#xff1a;在给B注入的时候为什么要注入一个代理对象&#xff1f; 初始化的时候是对A对象本身进行初始化&#xff0c;而容器中以及注入到B…

信奥一本通:1075:药房管理

这个题可能有点误解&#xff0c;看这个实例&#xff0c;不是用30依次去减10 5 20 6 7 8&#xff0c;如果按照这个减法&#xff0c;30先减10再减5就剩15了&#xff0c;那完全不够后面20减的&#xff0c;所以次数还剩4次。但是&#xff0c;这道题是谁能减就减谁&#xff0c;意思就…

使用 npm/yarn 等命令的时候会,为什么会发生 Error: certificate has expired

缘起 昨天&#xff0c;我写了一篇文章&#xff0c;介绍如何使用项目模板&#xff0c;构建一个 Electron 项目的脚手架&#xff0c;我发现我自己在本地无法运行成功&#xff0c;出现了错误。 ✖ Failed to install modules: ["electron-forge/plugin-vite^7.2.0",&qu…

hive load data未正确读取到日期

1.源数据CSV文件日期字段值&#xff1a; 2.hive DDL语句&#xff1a; CREATE EXTERNAL TABLE test.textfile_table1(id int COMMENT ????, name string COMMENT ??, gender string COMMENT ??, birthday date COMMENT ????,.......) ROW FORMAT SERDE org.apache.…

h5网页和 Android APP联调,webview嵌入网页,网页中window.open打开新页面,网页只在webview中打开,没有重开一个app窗口

我是h5网页开发&#xff0c;客户app通过webview嵌入我的页面 点击标题window.open跳转到长图页面&#xff0c;客户的需求是在app里新开一个窗口展示长图页面&#xff0c;window.open打开&#xff0c;ios端是符合客户需求的&#xff0c;但是在安卓端他会在当前webview打开 这…

vue封装el-table表格组件

先上效果图&#xff1a; 本文包含了具名插槽、作用域插槽、jsx语法三种&#xff1a; Render.vue&#xff08;很重要&#xff0c;必须有&#xff09;: <script> export default {name: "FreeRender",functional: true,props: {scope:Object,render: Functio…

C++11---(2)

目录 一、新增容器 1.1、array 1.2、forward_list 1.3、unordered系列 二、右值引用和移动语义 2.1、什么是左值&#xff0c;什么是左值引用 2.2、什么是右值&#xff0c;什么是右值引用 2.3、左值引用和右值引用比较 2.4、右值引用使用场景和意义 2.5、右值引用引用…

蓝牙BLE学习-GATT和ATT

1. GATT GATT-Generic Attribute profle-通用属性配置文件。GATT层是传输真正数据所在的层。包括了一个数据传输和存储架构以及其基本操作。GATT用来规范attribute中的数据内容&#xff0c;并运用group&#xff08;分组&#xff09;的概念对attribute进行分类管理。没有GATT&a…

Opencv中的RNG-随机绘图

在OpenCV中&#xff0c;RNG是一个随机数生成器类&#xff0c;用于生成各种类型的随机数&#xff0c;包括均匀分布或高斯分布的整数和浮点数。RNG类的实例化时可以接受一个无符号整数作为种子值&#xff0c;这个种子值决定了随机数生成序列的起点&#xff0c;相同的种子值将产生…

Toony Tiny Zombies pack

卡通低多边形僵尸角色包。 完全可定制和动画。 Mecanim准备就绪。 移动友好 型号包括: -21具男性尸体 -21名男性负责人 -16具女性尸体 -14名女性负责人 -6 武器 31 僵尸动画 所有角色都使用一个512x512的纹理(8个颜色皮肤) 下载: ​​Unity资源商店链接 资源下载链接 效…