Android SystemUI(一):图文并茂的介绍 :D

Android入坑三两年,从上层应用到系统App,从Frameworks到架构初窥,虽说了解不少,但终归没做系列的记录。

挑来捡去,认为还是要选个承上启下的东西来下笔较为妥当,那SystemUI模块是最适合不过了。

本系列基于AOSP Android 8.0 源码讲述SystemUI模块功能,若有讲的不对的地方,你来打我呀!

00

本文结构

01

什么是SystemUI?

作为Android系统核心应用,SystemUI负责反馈系统及应用状态并与用户保持大量的交互。耳熟能详的三栏:StatusBar(状态栏)、NavigationBar(导航栏)与Notification Panel(通知栏),以及Recents(近期任务界面),使用起来方便又快捷。

另外Keyguard(锁屏界面)也是属于SystemUI的一部分。并且在Android8.0代码中,Keyguard模块已经从外部被合并到SystemUI源码目录下。

02

SystemUI路径

与/packages/apps/下许多模块不同的是,SystemUI属于Android frameworks的一部分。这也就意味着,SystemUI在正常情况下是不可被替换的(例如,短信应用可以被三方应用替换,Settings因所需权限过高而除外)。

SystemUI 源码目录:

/frameworks/base/packages/SystemUI/

SystemUI APK路径:

/system/priv-app/SystemUI/

03

SystemUI功能划分

在Android8.0上,我大致将SystemUI模块分为11个子模块,如下图所示。其中的StackDivider和PipUI是在Android 7.0新加入的模块。相信很多人都已经体验过Android 7.0之后的分屏功能。

  1. StatusBar:通知消息提示和状态展现
  2. NavigationBar:返回,HOME,Recent
  3. KeyGuard:锁屏模块可以看做单独的应用,提供基本的手机个人隐私保护
  4. Recents:近期应用管理,以堆叠栈的形式展现。
  5. Notification Panel:展示系统或应用通知内容。提供快速系统设置开关。
  6. VolumeUI:来用展示或控制音量的变化:媒体音量、铃声音量与闹钟音量
  7. 截屏界面:长按电源键+音量下键后截屏,用以展示截取的屏幕照片/内容
  8. PowerUI:主要处理和Power相关的事件,比如省电模式切换、电池电量变化和开关屏事件等。
  9. RingtonePlayer:铃声播放
  10. StackDivider:控制管理分屏
  11. PipUI:提供对于画中画模式的管理

1

2

3

4

5

6

关于SystemUI的介绍到这里就结束了,后续会根据模块进行更为深入的分析。

原文发布于微信公众号 - 猿湿Xoong(skypeng-funny)

原文发表时间:2018-04-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

恢复WordPress分类目录的别名链接形式

注:内容很偏门,标题还真不知道如何拟,估计只有细看内容或有相同经历的朋友才看得懂俺说的是什么。 ---- 昨天下午自从在百度统计中使用了 SEO 建议之后,让我...

3536
来自专栏Python中文社区

Python开发微信公众号后台(系列二)

專 欄 ❈ 段晓晨,写过一点爬虫,写过几篇文章。能力虽有限,会尽量把想说的东西讲清楚。 知乎ID:段小草 知乎专栏:小段同学的杂记, https://zhua...

3117
来自专栏IMWeb前端团队

死活没生成layerForScrollingContent的解决办法

先挖个坑, 之后再寻找原因 问题是这样的一个可以滚动的页面, 但是死活都没有生成出layerForScrollingContent , 不知道为什么, 即便给s...

1787
来自专栏小狼的世界

GraphicsMagick介绍及安装

GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88中图像格...

1005
来自专栏程序员互动联盟

【入门指导第十三讲】概念墙

存在问题: 最近有小伙伴问html/html5/xhtml/xml这四个有什么区别? 解决方案: 小编在这里为大家详细解释一下。 html 学名叫做超文本标记语...

34510
来自专栏腾讯开源的专栏

【开源公告】通用 Web 组件化框架 Omi 正式开源

Omi 从 3.0 开始基于 preact 二次开发,完全可以共享 preact 和 react 的生态,也有了自己独特的风格和优势。

7.4K7
来自专栏Theo Tsao

Ionic3学习笔记(十六)上传头像至第三方图床

个人做的开源 Demo 登录注册模块采用的是 Wilddog 野狗通讯云的身份认证服务,不得不说各方面和 Google 收购的 Firebase 很像,十分简...

751
来自专栏存储

建立本地的Blast数据库

Blast(basic local alignment search tool) 局部序列比对基本检索工具,是NCBI开发的一款基于序列相似性的数据库搜索程序。...

2999
来自专栏.NET开发者社区

(码友推荐)2018-07-12 .NET及相关开发资讯速递

1.Optimization Thresholds – Grouping and Aggregating Data, Part 4

1153
来自专栏ChaMd5安全团队

Pentest box系列——爬坑记(2)

Pentest box 是啥,就不说了。直接来正题,其实吧,盒子的msf我并不是很常用。不过一直以来,使用盒子的朋友很多都说,msf不能更新或者进行更新就会出...

3268

扫码关注云+社区