本文首发微信公众号:菜天Android

一、本文结构


二、什么是SystemUI?

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

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


三、SystemUI路径

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

SystemUI 源码目录:

/frameworks/base/packages/SystemUI/

SystemUI APK路径:

/system/priv-app/SystemUI/

四、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:提供对于画中画模式的管理

重要模块在系统中的位置截图如下:







最后

这篇从模块上,阐述了 SystemUI 的有多少个模块,每个模块在什么具体位置。关于SystemUI的介绍到这里就结束了,后续会根据模块进行更为深入的分析。



欢迎关注微信公众号 菜天Android 主推 Android 干货文章 关注得 Android 详细知识图谱

更多相关文章

  1. [转]Android(安卓)应用初始化及窗体事件(按键)的分发 [此博文包含
  2. iOS 7 需要再和 Android(安卓)比什么
  3. 使用Qt5.9开发Android(安卓)应用程序(Windows平台篇)
  4. Android应用开发——TextView控件属性列表
  5. Android应用程序线程消息循环模型分析
  6. Android(安卓)应用程序之间数据共享—ContentProvider
  7. Android5,6,7,8新特性
  8. Android中应用界面主题Theme使用方法和页面定时跳转应用
  9. Android(安卓)开发之旅:又见Hello World!

随机推荐

  1. Android中的AppWidget
  2. Android(安卓)技能树
  3. Android尺寸单位
  4. Android初始化语言 (init.*.rc、init.con
  5. android 获取系统分辨率
  6. 传智播客的安卓基础视频-20151228-Androi
  7. Android连接上google
  8. android sdk manager安装SDK出现错误解决
  9. 简单学习Android(安卓)TextView
  10. android第二天课程