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.hqwc.cn/news/439102.html

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

相关文章

Hadoop3.x基础(1)

来源:B站尚硅谷 这里写目录标题 大数据概论大数据概念大数据特点(4V)大数据应用场景 Hadoop概述Hadoop是什么Hadoop发展历史(了解)Hadoop三大发行版本(了解)Hadoop优势(4高)Hadoop组成&#xf…

349. 两个数组的交集(力扣LeetCode)

文章目录 349. 两个数组的交集题目描述数组解题set容器解题该思路数组版解题 349. 两个数组的交集 题目描述 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入&a…

C#,贝尔数(Bell Number)的计算方法与源程序

1 埃里克坦普尔贝尔 贝尔数是组合数学中的一组整数数列,以埃里克坦普尔贝尔(Eric Temple Bell)命名, 埃里克坦普尔贝尔(生于1883年2月7日,苏格兰阿伯丁郡阿伯丁,于1960年12月21日在美国加利福尼…

RK3568平台开发系列讲解(Linux系统篇)device 资源的获取

🚀返回专栏总目录 文章目录 一、platform_device 结构体二、platform_get_resource() 获取沉淀、分享、成长,让自己和他人都能有所收获!😄 一、platform_device 结构体 struct platform_driver 结构体继承了 struct device_driver 结构体, 因此可以直接访问 struct devi…

SeaTunnel集群安装

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

jenkins pipeline配置maven可选参数

1、在Manage Jenkins下的Global Tool Configuration下对应的maven项添加我们要用得到的不同版本的maven安装项 2、pipeline文件内容具体如下 我们maven是单一的,所以我们都是配置单选参数 pipeline {agent anyparameters {gitParameter(name: BRANCH_TAG, type: …

(五)MySQL的备份及恢复

1、MySQL日志管理 在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这样情况下,我们必须保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据了 数据库中数据丢失或被破坏可能原因: 误删除数据…

jQuery 下载 使用

1. jQuery 网址&#xff1a;jQuery CDN 2. 下载, 右击在新的tab打开 3.ctrls另存为jquery-1.12.4.min.js&#xff0c;并放到自己项目的js目录下 4.请参考目录 5.编写第一个使用jQuery的代码 <script src"js/jquery-1.12.4.min.js"></script> <!DOCT…

数学知识第五期 扩展欧几里得算法

前言 扩展欧几里得算法也是重要的数论&#xff0c;数论固然就是数学知识的理论&#xff0c;希望大家能够熟练掌握&#xff01;&#xff01;&#xff01; 一、扩展欧几里得算法的基本内容 扩展欧几里得算法&#xff08;英语&#xff1a;Extended Euclidean algorithm&#xf…

非阿里云注册域名如何在云解析DNS设置解析?

概述 非阿里云注册域名使用云解析DNS&#xff0c;按照如下步骤&#xff1a; 添加域名。 添加解析记录。 修改DNS服务器。 DNS服务器变更全球同步&#xff0c;等待48小时。 添加解析记录 登录云解析DNS产品控制台。 在 域名解析 页面中&#xff0c;单击 添加域名 。 在 …

为什么要用云手机养tiktok账号

在拓展海外电商市场的过程中&#xff0c;许多用户选择采用tiktok短视频平台引流的策略&#xff0c;以提升在电商平台上的流量&#xff0c;吸引更多消费者。而要进行tiktok引流&#xff0c;养号是必不可少的一个环节。tiktok云手机成为实现国内跨境养号的一种有效方式&#xff0…

C语言——O / 动态内存管理

一、为什么要有动态内存分配 我们已经掌握的内存开辟⽅式有&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间 但是上述的开辟空间的⽅式有两个特点&#xff1a; • 空间开辟⼤⼩是固定的。 • 数组在申明的时候&am…