在android的各个版本的升级中,android一直是在变化中,对比android 2.3,ICS最大的变化是新增加了一栏,叫做导航栏(Navigation Bar),还有随着导航栏 RecentTask button的而增加的RecentsPanelView。
系统栏是一个比较笼统的叫法,从UI界面上来看,系统栏包括4个部分:
l 状态栏:PhoneStatesBarView,位于界面顶部,显示系统的当前状态(时间、电源、信号、通知等)。
l 系统栏抽屉:ExpandedView,显示快捷开关、当前的任务、通知等。
l 导航栏:NavigationBarView,位于界面的地步,用来代替硬件键盘。
l 任务历史面板:RecentPanelView,用来显示最近打开的任务。
在正常工作时,只有状态栏和导航栏是一直显示的,其他的都是需要特定事件触发。
从代码结构来看,系统栏的代码可以从framework层和应用层两层来看:
应用层的主体是一个service,在SystemUIService的onCreate函数被调用时,创建了PhoneStatusBar。PhoneStatusBar是一个view的管理类,PhoneStatusBar创建了这些view,并添加到WindowManager。PhoneStatusBar继承了一个回调类——CommandQueue,在他被创建时将自己注册到了StatusBarManagerService。
StatusBarManagerService是一个系统服务,这个服务能通过回调来操作状态栏。使用时一般调用它的客户端——StatusBarManager方法。