专栏首页猿湿XoongAndroid SystemUI(一):图文并茂的介绍 :D

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的介绍到这里就结束了,后续会根据模块进行更为深入的分析。

本文分享自微信公众号 - 菜天(newbietian),作者:猿湿Xoong

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android SystemUI(二):启动流程和初始化

    菜天哥哥
  • Android | 一个很糙的字母手势识别方案

    菜天哥哥
  • Android Hybrid 混合开发初体验

    最近熟悉项目,就发现项目中用是原生框架 + Web 前端展示这种混合开发的形式。俗称 Hybrid(译:混合动力),典型的互联网 App 开发方式。

    菜天哥哥
  • 校招必考:根据二叉树遍历序列确定二叉树

    根据二叉树的前序遍历和中序遍历求其后序遍历或者根据二叉树的后序遍历和中序遍历求其前序遍历是腾讯等校招的必考题,下面我们就来分析一下解题思路。 这道题本质上...

    Steve Wang
  • 前端|event.target与event.currentTarget的区别

    event.target事件和event.currentTarget事件,经常被人们混淆。因为它们两个有时候的返回值是完全一样的,因此很具有迷惑性。然而如果真的...

    算法与编程之美
  • 选择一款趁手的 PHP 代码编辑器

    正所谓「工欲善其事,必先利其器」,搭建好本地开发环境后,我们还需要选择一款趁手的 PHP 代码编辑器,它是我们日常编码形影相伴的兵器,可以最大化提升编码输出和工...

    学院君
  • 使用Spring Boot和Kotlin创建RESTfull API

    使用 Kotlin 结合 SpringBoot 开发一个 RESTFul版本的 HelloWorld。

    全科
  • R语言主成分和因子分析

    主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。 探索性因子分析(EFA)是一系列用来发现一组变...

    机器学习AI算法工程
  • .NET Core的日志[1]:采用统一的模式记录日志

    记录各种级别的日志是所有应用不可或缺的功能。关于日志记录的实现,我们有太多第三方框架可供选择,比如Log4Net、NLog、Loggr和Serilog 等,当然...

    蒋金楠
  • R语言实现主成分和因子分析

    主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。 探索性因子分析(EFA)是一系列用来发现一组变量...

    机器学习AI算法工程

扫码关注云+社区

领取腾讯云代金券