一直在看老罗的Android源码之旅,受益颇深。看的过程中很想也能把自己知道的东西分享出来,这段时间一直做的是4.0状态栏的升级维护工作,边学边工作,知道了状态栏的一些经验,在此分享出来,对自己的学习做次总结。
预计状态栏的东西总共写4篇,分别是状态栏功能介绍、状态栏的启动过程、状态图标添加到状态栏的过程、Notification发送到状态栏的过程,欢迎朋友们指正,共同学习,共同提高。
状态栏在Android手机中位于屏幕的最上方,通常在各种应用的最上方都会显示,也有个别,例如全屏的游戏将状态栏隐藏增加游戏的可视面积。状态栏的视图效果如下图:
如图所示,状态栏分为通知图标区域,状态图标区域,信号电量组合区域和时钟区域5个部分。
通知区域显示系统发出notification的ticker,有图标和文字的简短显示,类似于NBA中滚动的比分,不过此ticker的文字只在刚发送时一次。
状态图标区域显示系统设备的当前状态,例如打开了WIFI,蓝牙,GPS后,此区域都会显示相对应的图标。上图显示的就是打开的Wifi和SIM卡出错图标。
信号电量组合区域显示信号和电量的变化状态,当信号和电量发生变化后此处图标都会进行相应更新。在4.0中此区域信号部分修改为Wifi和手机信号的组合显示,用来节省状态栏的空间。
时钟区域按指定格式显示系统的当前时间。
状态栏的基本功能就是上面4大区域的更新显示,提示系统当前状况,显示当前系统存在的Notification消息。其中对Notification消息的处理比较特殊,除了在状态栏显示notification的ticker,还会在状态栏展开后,显示notification的详细信息,如下图:
多个notification会在此处列表显示,系统会根据notification产生的时间和优先级进行排序。每个notification还给我们提供了对产生notification应用的快捷操作,通过点击notification可以进入预先设定在notification中的点击事件,处理与此通知相关的事物。
除了这些常见的功能,状态栏还提供了以下功:·
截图:一般是长按 音量下+电源键 实现截图,此功能会将当前屏幕保存成png格式的图片,存放在内部空间中。
保存近期使用应用快照:这是一个后台任务,会定时更新,保存最新的应用快照。当长按 home键时会以列表方式显示近期操作过所有应用的快照,点按任意快照便进入此应用最后操作的界面。
个人认为状态栏是Android中设计非常出色的一个功能,通过简单明了的状态图标我们可以一目了然的观察到系统当前的状态,对于系统,其他应用发出的notification更是清楚简单的进行提示,并给出了对这些notification进一步处理的操作接口。