Android12动态控制SystemUI状态栏和导航栏
要实现一个需求,在Android12上实现动态控制状态栏和导航栏的显示及隐藏,基本思路:在frameworks/base 中增加想要的显示控制,在Settings增加开关按钮进行功能出发。
一、在framework/base
增加系统属性,用于保存显示状态:true 表示显示,false表示隐藏
可在编译固件时,在mk文件中增加这两个属性
persist.sys.statusbar.enable=true
persist.sys.navigationbar.enable=true
用于控制显示、隐藏的广播
com.systemui.statusbar.show ----显示状态栏
com.systemui.statusbar.hide ----隐藏状态栏
com.systemui.navigationbar.show ----显示导航栏
com.systemui.navigationbar.show ----隐藏导航栏
在frameworks/base/packages/SystemUI 增加功能代码
修改代码涉及的文件如下:
AndroidManifest.xml
src/com/android/systemui/navigationbar/NavigationBarController.java
src/com/android/systemui/statusbar/phone/StatusBar.java
src/com/android/systemui/statusbar/window/StatusBarWindowController.java
AndroidManifest.xml 增加广播的应用
+ <protected-broadcast android:name="com.systemui.statusbar.show" />
+ <protected-broadcast android:name="com.systemui.statusbar.hide" />
+
+ <!-- For NavigationBar show or not -->
+ <protected-broadcast android:name="com.systemui.navigationbar.show" />
+ <protected-broadcast android:name="com.systemui.navigationbar.hide" />
statusbar/phone/StatusBar.java 初始化时根据系统属性显示或者隐藏状态栏和导航栏,监听广播显示或隐藏状态栏和导航栏
@@ -313,6 +313,12 @@ public class StatusBar extends SystemUI implementspublic static final int[] CAMERA_LAUNCH_GESTURE_VIBRATION_AMPLITUDES =new int[]{39, 82, 139, 213, 0, 127};+ private static final String ACTION_HIDE_STATUS_BAR = "com.systemui.statusbar.hide";
+ private static final String ACTION_SHOW_STATUS_BAR = "com.systemui.statusbar.show";
+ private static final String ACTION_HIDE_NAVIGATION_BAR = "com.systemui.navigationbar.hide";
+ private static final String ACTION_SHOW_NAVIGATION_BAR = "com.systemui.navigationbar.show";
+ private static final String SYS_PROPERTY_STATUS_BAR = "persist.sys.statusbar.enable";
+ private static final String SYS_PROPERTY_NAVIGATION_BAR = "persist.sys.navigationbar.enable";
+
@@ -966,6 +972,9 @@ public class StatusBar extends SystemUI implements}createAndAddWindows(result);
+ if (!SystemProperties.getBoolean(SYS_PROPERTY_STATUS_BAR, false)) {
+ mStatusBarWindowController.setBarVisibility(View.GONE);
+ }if (mWallpaperSupported) {// Make sure we always have the most current wallpaper info.
@@ -1178,7 +1187,9 @@ public class StatusBar extends SystemUI implementsmHeadsUpManager.addListener(mVisualStabilityM
Android12动态控制SystemUI状态栏和导航栏相关推荐
- Android 7.0 SystemUI 之启动和状态栏和导航栏简介
Android 7.0 SystemUI 之启动和状态栏和导航栏简介 一.SystemUI 是什么 首先SystemUI 是一个系统应用,apk路径位于/system/priv-app 源码路径位于: ...
- Android 12系统源码_SystemUI(五)自定义状态栏和导航栏视图
前言 前面几篇文章我们具体分析了Android12系统原生的StatusBar和CarStatusBar的启动流程以及视图构建流程,本篇文章我们来自定义实现状态栏和导航栏视图. 一.为系统添加自定义状 ...
- 管理系统状态栏和导航栏(翻译)
原文:https://developer.android.com/training/system-ui/index.html 管理系统UI system bars 是专用于显示设备的提醒和消息的区域. ...
- Android布局延伸状态栏,Android沉浸式全屏讲解(状态栏、导航栏处理)
Android应用中经常会有一些要求全屏显隐状态栏导航栏的需求.通过全屏沉浸式的处理可以让应用达到更好的显示效果.下面系统的讲解一下有关全屏,隐藏状态栏导航栏,沉浸式的知识. 在Android4.1之 ...
- android界面UI美化:沉浸模式、全透明或半透明状态栏及导航栏的实现
android api19开始我们就能对顶部状态栏和底部导航栏进行半透明处理了,而api21开始则可以实现全透明状态栏与导航栏以及开启沉浸模式,至于什么是沉浸模式,大家百度一下应该就都知道了,有一点需 ...
- android界面美化教程,android界面UI美化:沉浸模式、全透明或半透明状态栏及导航栏的实现...
android api19开始我们就能对顶部状态栏和底部导航栏进行半透明处理了,而api21开始则可以实现全透明状态栏与导航栏以及开启沉浸模式,至于什么是沉浸模式,大家百度一下应该就都知道了,有一点需 ...
- android 沉浸式菜单栏,Android沉浸式全屏讲解(状态栏、导航栏处理)
Android应用中经常会有一些要求全屏显隐状态栏导航栏的需求.通过全屏沉浸式的处理可以让应用达到更好的显示效果.下面系统的讲解一下有关全屏,隐藏状态栏导航栏,沉浸式的知识. 在Android4.1之 ...
- android 11.0 增加控制状态栏和导航栏的接口
增加控制状态栏和导航栏的接口,代码如下 .../statusbar/NavigationBarController.java | 6 +-.../phone/NavigationBarFragment ...
- Android 状态栏, 标题栏, 导航栏,系统栏,应用栏的区别和解释
如上图,可以看到,有状态栏(status bar).标题栏(action bar, toolbar).导航栏(navigation bar) 等, 状态栏 (status bar):是指手机最顶上,显 ...
- 【干货】Android系统定制基础篇:第十三部分(开放root权限、禁止应用旋转、隐藏状态栏和导航栏)
一.Android开放root权限 Android 5.1 1.修改 su 源码(system\extras\su\su.c),注释下面代码: int main(int argc, char **ar ...
最新文章
- 项目的简单总结二--可拉伸的头视图
- 万能android调用webservice方法——参数类型不受限制
- 天池大赛 + CV语义分割 + 78万奖金:全国数字生态创新大赛来了!
- 考c语言三级需要什么软件,全国计算机三级网络技术上机考C语言的软件是什么哈?...
- IOS高级开发 runtime(一)
- java8函数式编程 视频_快速掌握Java8 Stream函数式编程技巧
- 跨境电商未来应该怎么走?
- 使用LoadRunner-运行负载测试
- halcon edges_sub_pix算子
- Centos7.x 在线安装Docker和离线安装 Docker
- c语言中listnode是什么意思,怎么理解typedef Node * List
- 一招判断三元催化堵塞_汽车的氧传感器和三元催化器故障如何判断呢?用这些方法判断...
- Python之Numpy常用操作
- 最小二乘法求线性回归方程_规范解题第14期 利用“最小二乘法”原理解一道题...
- Aspose.word设置页眉
- 【笔记】PCIe TLP Header 中的常见 Feild 及其释义
- 地形湿度指数(TWI)获取教程
- python给乘风破浪的姐姐制作词云打call图
- 音频的相关基础知识,这里有
- php可以用中文的单引号吗,PHP中单双引号用法误区