我擅長什麼?
當我想到這個這個問題的時候,腦子裏是一片空白的:哎呀,我什麼都知道點,但是說擅長的,還真沒拿的出手的,這怎麼行!
因而就有了SystemUI系列的文章。
—— 猿溼Xoongapp
1、本文結構ide
2、什麼是SystemUI?
做爲Android**系統**核心應用,SystemUI負責反饋系統及應用狀態並與用戶保持大量的交互。耳熟能詳的三欄:StatusBar(狀態欄)、NavigationBar(導航欄)與Notification Panel(通知欄),以及Recents(近期任務界面),使用起來方便又快捷。blog
另外Keyguard(鎖屏界面)也是屬於SystemUI的一部分。而且在Android8.0代碼中,Keyguard模塊已經從外部被合併到SystemUI源碼目錄下。事件
3、SystemUI路徑
與/packages/apps/下許多模塊不一樣的是,SystemUI屬於Android frameworks的一部分。這也就意味着,SystemUI在正常狀況下是不可被替換的(例如,短信應用能夠被三方應用替換,Settings因所需權限太高而除外)。ip
SystemUI 源碼目錄:源碼
/frameworks/base/packages/SystemUI/io
SystemUI APK路徑:權限
/system/priv-app/SystemUI/im
4、SystemUI功能劃分
在Android8.0上,我大體將SystemUI模塊分爲11個子模塊,以下圖所示。其中的StackDivider和PipUI是在Android 7.0新加入的模塊。相信不少人都已經體驗過Android 7.0以後的分屏功能。d3
主要模塊有:
StatusBar:通知消息提示和狀態展示
NavigationBar:返回,HOME,Recent
KeyGuard:鎖屏模塊能夠看作單獨的應用,提供基本的手機我的隱私保護
Recents:近期應用管理,以堆疊棧的形式展示。
Notification Panel:展現系統或應用通知內容。提供快速系統設置開關。
VolumeUI:來用展現或控制音量的變化:媒體音量、鈴聲音量與鬧鐘音量
截屏界面:長按電源鍵+音量下鍵後截屏,用以展現截取的屏幕照片/內容
PowerUI:主要處理和Power相關的事件,好比省電模式切換、電池電量變化和開關屏事件等。
RingtonePlayer:鈴聲播放
StackDivider:控制管理分屏
PipUI:提供對於畫中畫模式的管理
重要模塊在系統中的位置截圖以下:
關於SystemUI的介紹到這裏就結束了,後續會根據模塊進行更爲深刻的分析。