Android 8.0 SystemUI 源碼分析(一):圖文並茂的介紹 :D

本文首發微信公衆號:菜天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 詳細知識圖譜
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章