Android5.1SystemUI详解 - 图文(4)

2020-02-21 18:15

4.StatusBar

加图标AddIcons

这里的流程,需要参考到前面的SystemUI的类图,PhoneStatusBar继承自 BaseStatusBar,而BaseStatusBar实现了CommandQueue里的Callbacks接口;而这个接口里面有个关键的addIcon() 方法。

PhoneStatusBar的start() 方法里面调用PhoneStatusBarPolicy的构造器; 注意:这里现在所有的Icon初始,都是不可见的。

此构造器代码片段:

然后,后面依次调

用StatusBarMa

nager,StatusBarManagerService和 CommandQueue的setIcon()方法;

再然后CommandQueue对象回调PhoneStatusBar的AddIcon()方法;最后通过mStatusIconsKeyguard.addView()方法,将Icon显示到界面上。

最后,那些图标真的需要显示了,是通过接收系统广播,然后动态显示,如下图的StatusBarManager对象的setIcon()调用关系:

此部分时序图如下:

(1)Icons排列规则

状态栏的布局文件:

frameworks/base/packages/SystemUI/res/layout/status_bar.xml

此文件 又依次包含下面两个文件:

frameworks/base/packages/SystemUI/res/layout/system_icons.xml

frameworks/base/packages/SystemUI/res/layout/signal_cluster_view.xml

总体来说,Icons的排列分四个区域,容器是 PhoneStatusBarView;com.android.systemui.statusbar.phone.PhoneStatusBarView;它是继承自 PanelBar extends FrameLayout ;

四个区域中,

三个常态从左往右,分别是:应用通知区(gone过量)、系统图标、时钟区; 另外一个动态浮动显示区域,通知提示区(ticker_stub);

系统图标又包含三部分:状态图标、信号区、电量区(默认gone电量百分比);

信号区域包括:VPN、WiFi、手机信号、飞行模式、no_sims;

以上各区域,关系结构图如下:

通知栏 (浮动)通知提示区(ticker_stub) (常态)状态栏 应用通知过量(gone) 应用通知区 系统图标区 信号区 状态 电量icon 手机信号 飞行模式 VPN WiFi

各图标和区域,宽度与互挤原则如下:

时钟 电量百分比(gone) no_sims

其中,只有最左边的 应用通知区 设置了权重,因而它可以得到更多的区域(在其他区动态不显示的时候),如下图XML文件。

其他区域宽度基本都是 (wrap_content);

另外有三个固定宽度,和一个占满宽度(match_parent) ticker :

电量图标宽度9.5dp,

如下图:

wifi_signal_spacer和wifi_airplane_spacer宽高4dp,可见性gone:


Android5.1SystemUI详解 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:竣工图的编制与归档

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: