Android SystemUI 介绍

目录

一、什么是SystemUI

二、SystemUI应用源码

三、学习 SystemUI 的核心组件

四、修改状态与导航栏测试


      本篇文章,主要科普的是Android SystemUI , 下一篇文章我们将介绍如何把Android SystemUI 应用转成Android Studio 工程项目。

一、什么是SystemUI

     什么是SystemUI?Android SystemUi是指Android操作系统中的系统用户界面,它是用户与设备交互的界面。 SystemUi提供了状态栏、导航栏、通知中心等重要的用户界面元素,这些元素可以帮助用户快速地访问设备的各种功能和信息。主要模块如下:

1、NavigationBar(导航栏):NavigationBar是位于屏幕底部的导航界面,提供了返回、主页和最近任务等导航操作的按钮。它使用户能够浏览应用程序和系统功能,如切换应用、返回主屏幕等。

2、StatusBar(状态栏):StatusBar是Android SystemUI的核心组件之一,位于屏幕顶部。它显示了通知图标、系统图标(如电池、信号强度、时间等)以及其他与系统状态相关的信息。

3、Notification Shade(通知面板):Notification Shade是一个可下拉的面板,用户可以从任何屏幕位置向下滑动以展开它。它显示了来自各个应用程序的通知,并提供一些快速设置选项,如Wi-Fi、蓝牙、飞行模式等。

4、LockScreen(锁屏界面):LockScreen是Android设备的初始界面,显示了时间、日期、通知和快捷操作。用户可以在锁屏界面上查看和管理通知,以及执行一些快速操作,如解锁屏幕、调整音量等。

5、Quick Settings(快速设置):Quick Settings是通知面板中的一部分,提供了一组常用的系统设置选项,用户可以通过快速切换按钮打开或关闭这些选项,例如调整屏幕亮度、打开/关闭无线网络等。

6、SystemUI Tuner(系统UI调节器):SystemUI Tuner是一个隐藏的设置菜单,允许用户自定义和调整系统UI的某些功能和外观。用户可以通过SystemUI Tuner修改状态栏图标、导航栏按钮、通知行为等。

7、System Bars(系统栏):系统栏包括StatusBar和NavigationBar,它们作为Android设备的固定元素,提供了对系统功能和导航的访问。系统栏的样式和行为可以根据不同设备和版本进行自定义

版本变化

时间段    系统版本    发展历程
2008年    Android 1.0    Android初始版本没有状态栏,只有应用程序屏幕
2009年    Android 1.5    引入状态栏,但只有通知和电池指示器
2010年    Android 2.3    状态栏加入了快捷设置面板
2011年    Android 4.0    引入了新的状态栏,支持通知和快捷设置面板
2013年    Android 4.4    状态栏和导航栏支持半透明效果
2014年    Android 5.0    引入Material Design,对状态栏和导航栏进行了全面更新
2016年    Android 7.0    引入了快捷应用程序快捷方式,可从状态栏访问
2019年    Android 10.0    状态栏和导航栏支持全面屏手势导航
2020年    Android 11.0    加入了对新型折叠式设备的支持,如Galaxy Z Fold2
2021年    Android 12.0    引入了Material You设计语言,使状态栏和导航栏更加自适应                2022年    Android 13.0    沿用了Material You设计语言,加入了一些细节                                          2023年    Android 14.0    待更新

二、SystemUI应用源码

        前提是下载Android系统源码,在android12/frameworks/base/packages/SystemUI目录下,其中android12为创建系统源码下载文件位置。在此目录下,你可以找到SystemUI应用的所有源代码文件,包括Java源代码文件、资源文件和布局文件等。如果你想查看和修改SystemUI应用的源代码,可以使用Android Studio等集成开发环境打开该目录,并进行相应的操作。

三、学习 SystemUI 的核心组件

上述核心服务之外,SystemUI 还包含了很多核心组件,如 ViewGroup、View、Drawable、Animation、Layout 等等。在阅读 SystemUI 源码时,需要对这些组件进行一一了解和分析。

其中比较重要的组件有:

BaseStatusBar: 状态栏基础类,负责状态栏的显示和隐藏,以及状态栏中各个 View 的管理。

StatusBarWindowView: 状态栏窗口视图,负责渲染状态栏的整个界面。

NotificationStackScrollLayout: 通知滑动布局,负责管理通知在状态栏中的展示。

RecentsView: 最近任务视图,负责可视化呈现最近任务列表。

KeyguardViewMediator: 锁屏视图中介,负责管理锁屏界面的显示和隐藏

四、修改状态与导航栏测试

        关于Android系统  SystemUI 状态栏(StatusBar)和导航栏(Navigationbar)高度修改,其

路径:frameworks/base/core/res/res/values/dimens.xml,

Navigationbar默认高度48dp

StatusBar高度默认是24dp

编译运行测试

参考

Android SystemUI篇(一)-CSDN博客

Android SystemUI的客制化 (1)_android.uid.systemui-CSDN博客

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

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

相关文章

华为配置小型网络WLAN 的基本业务示例

配置小型网络WLAN基本业务示例 组网图形 图1 配置小型网络WLAN基本业务组网图 小型WLAN网络简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 小型WLAN网络简介 本文介绍的WLAN网络是指利用频率为2.4GHz或5GHz的射频信号作为传输介质的无线局域网,相对于有…

Vue之初识Vue CLI 脚手架

Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处? 1.开箱即用,零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …

Hack The Box-Pov

信息收集&端口利用 先使用nmap对主机进行端口扫描 nmap 10.10.11.251只开放了80端口 访问网站后发现没有什么功能点,尝试目录扫描 并没有什么能够利用的点 使用gobuster进行子域名扫描 gobuster dns -d pov.htb -w /usr/share/wordlists/seclists/Discovery/DNS/subdo…

MSE Nacos 配置变更审计平台使用指南

作者:孙立(涌月)、邢学超(于怀)、李艳林(彦林) 配置审计平台简介 Nacos [ 1] 作为一款业界主流的微服务注册中心和配置中心,管理着企业核心的配置资产,由于配置变更的安…

聚醚醚酮(Polyether Ether Ketone)PEEK在粘接使用时使用UV胶水的优势有哪些?要注意哪些事项?

使用UV胶水在聚醚醚酮(Polyether Ether Ketone,PEEK)上进行粘接可能具有一些优势,但同时也需要注意一些事项。以下是使用UV胶水的优势和需要考虑的事项: 优势: 1.快速固化: UV胶水通常具有快速…

spark window源码探索

核心类: 1. WindowExec 物理执行逻辑入口,主要doExecute()和父类WindowExecBase 2. WindowFunctionFrame 窗框执行抽象,其子类对应sql语句的不同窗框 其中又抽象出BoundOrdering类, 用于判断一行是否在界限内(Bound), 分为RowBoundOrdering…

总结10(break和continue)

break break如果用于循环是用来终止循环 break如果用于switch,则是用于终止switch break不能直接用于if,除非if属于循环内部的一个子句(下图为举例) 例1: (该图中break与if没有关系,只终止for循…

3、css设置样式总结、节点、节点之间关系、创建元素的方式、BOM

一、css设置样式的方式总结: 对象.style.css属性 对象.className ‘’ 会覆盖原来的类 对象.setAttribut(‘style’,‘css样式’) 对象.setAttribute(‘class’,‘类名’) 对象.style.setProperty(css属性名,css属性值) 对象.style.cssText “css样式表” …

利用外卖系统源码构建高效的在线订餐平台

在当今数字化时代,外卖服务已成为人们日常生活中不可或缺的一部分。为了满足用户需求,许多创业者和企业都希望搭建自己的在线订餐平台。利用现有的外卖系统源码,可以快速构建一个高效、安全的在线订餐平台。本文将介绍如何利用外卖系统源码来…

Latex warning: Ignoring empty anchor,如何解决?

目录 一、解决办法: 二、另一种潜在的方法: 一、解决办法: 在\footnotetext{....}前添加:\makeatletter\def\HyWarning#1{}\makeatother \makeatletter\def\HyWarning#1{}\makeatother \footnotetext{*Address Correspondence…

SeaTunnel集群安装

环境准备 服务器节点 节点名称 IP bigdata1 192.168.1.250 bigdata4 192.168.1.251 bigdata5 192.168.1.252 Java环境(三个节点都需要) java1.8 注意:在安装SeaTunnel集群时,最好是现在一个节点上将所有配置都修改完&a…

AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提前方法分享)

Java可使用的OCR工具Tess4J使用举例 1.简介1.1 简单介绍1.2 官方说明 2.使用举例2.1 依赖及语言数据包2.2 核心代码2.3 识别身份证信息2.3.1 核心代码2.3.2 截取指定字符2.3.3 去掉字符串里的非中文字符2.3.4 提取出生日期(待优化)2.3.5 实测 3.总结 1.简…

# Redis 分布式锁如何自动续期

Redis 分布式锁如何自动续期 何为分布式 分布式,从狭义上理解,也与集群差不多,但是它的组织比较松散,不像集群,有一定组织性,一台服务器宕了,其他的服务器可以顶上来。分布式的每一个节点&…

搭建 prometheus + grafana + springboot3 监控

下载安装包 下载prometheus:https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.windows-amd64.zip 下载grafana: https://dl.grafana.com/enterprise/release/grafana-enterprise-9.4.1.windows-amd64.zip Spr…

Python中容器类型的数据

目录 序列 序列的索引操作 加和乘操作 切片操作 成员测试 列表 创建列表 追加元素 插入元素 替换元素 删除元素 元组 创建元组 元组拆包 集合 创建集合 修改集合 字典 创建字典 修改字典 访问字典视图 遍历字典 若我们想将多个数据打包并且统一管理&…

Cloudreve个人网盘系统源码 支持云存储(七牛、阿里云OSS、腾讯云COS、又拍云、OneDrive) 基于Go框架

现在的网盘动不动就限速,涨价,弄得很是心烦。今天分享一款开源免费的网盘项目,基于 Go 语言开发的 Cloudreve。Cloudreve基于Go框架云存储个人网盘系统源码支持多家云存储驱动(从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDr…

Win10 双网卡实现同时上内外网

因为需要同时上内网和外网,但公司做了网络隔离,不能同时上内外网,所以多加了块无线网卡,配置双网关实现同时上内外网,互不影响 打开 Windows PowerShell(管理员),输入:ro…

翻译: GPT-4 Vision通过量身定制的推荐来增强应用的用户体验 升级Streamlit五

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…

【新书推荐】3.2节 位运算之加减乘除

本节内容:二进制移位运算,以及逻辑运算与算术运算之间的转换。任何进制的位运算本质都是一样的。 ■二进制数移位运算:二进制数向左移位运算相当于做2的幂乘法运算,二进制数向右移位运算,相当于做2的幂除法运算。 ■十…

MySQL安全(一)权限系统

一、授权 1、创建用户 在MySQL中,管理员可以通过以下命令创建用户: namelocalhost IDENTIFIED BY password; name是要创建的用户名,localhost表示该用户只能从本地连接到MySQL,password是该用户的密码。如果要允许该用户从任何…