本文章只适合于android中级开发者阅读(要求熟悉基本应用开发,了解android的四层框架等)
一、什么是SystemUI
SystemUI是一个系统的apk(位于/system/app目录下),它主要包括 status bar 、navigation bar两部分以及RecentsPanel、StatusBarExpanded、TrackingView、Keyguard、com.android.launcher/com.android.launcher2.Launcher、com.android.systemui.ImageWallpaper。详见
http://blog.csdn.net/yihongyuelan/article/details/7695903 本文主要解析(status bar 、navigation bar
)
status bar(状态栏)
StatusBar实际上是由PhoneStatusBarView构成,而PhoneStatusBarView又细分成两个大模块,分别是icons和ticker两个布局。我们知道,在通常情况下,系统左边放置通知图标(notificationIcons),中间放置状态图标(statusIcons)以及信号图标(signal_battery_cluster),右边放置日期(clock),ticker默认是看不见的,因此实际上我们真正看到的StatusBar是icons的布局。如图:
红色:notificationIcons,通知图标,比如我们常见的360以及QQ等等,都会在这里显示自己的图标;
紫色:statusIcons,状态图标,这里会放置系统的一些状态图标,比如像蓝牙、闹钟、耳机插入等等;
绿色:signal_battery_cluster,信号以及电量图标,这里主要放置了wifi以及手机信号和电池电量的图标(注:没有插入SIM卡);
黄色:clock,时钟图标;
蓝色:ticker,通知信息图标,当系统接收到通知后,有的通知具有通知信息,因此会通过ticker进行显示,比如禁用360的悬浮窗,插拔SD卡等等;
navigation bar(通知状态栏)
navigation bar只会出现在在那些没有传统的硬件键盘的设备上。它控制设备的导航,包括back、home和recents三个按键。
如图:
二、systemUI启动
SystemUIservice 的启动过程如图