关闭

SystemUI浅析

38人阅读 评论(0) 收藏 举报

最近刚弄玩SystemUI的更改,记录一下,android4.4:


1.SystemUI的启动流程:
SystemServer(Service) -> SystemUIService(Service) -> SystemBars(class).start() -> SystemBars(class).onNoService -> SystemBars(class).createStatusBarFromConfig() -> PhoneStatusBar(class).start() ->

PhoneStatusBar(class).createAndAddWindows() -> PhoneStatusBar(class).addStatusBarWindow() -> PhoneStatusBar(class).makeStatusBarView()<此处主要是SystemUI的LAYOUT初始化,也是主要操作的地方> ->

mWindowManager.addView(mStatusBarWindow, lp)<将要显示的布局,加载到窗口显示>

启动流程的主框架基本上就是这样的。更改的地方在makeStatusBarView();

2.SystemUI的图标更新流程:(Stsusbar的系统图标更新流程)

首先是图标的初始化:

CommandQueue(class)<此类是系统级服务要更新SystemUI时的binder,也就是说,当系统要更新图标时,就会调用CommandQueue的对应方法> -> BaseStatusBar.Callbacks() -> PhoneStatusBar.Callbacks()<addIcon(),updateIcon

(),removeIcon(),addNotification(),updateNotification()...>


PhoneStatusBarPolicy(class)<此类是实现初始化statusbar系统图标的类,如果要添加默认的图标需要在此处添加> -> StatusBarManager(class系统级的服务,统筹SystemUI的图标显示)

3.SystemUI的布局(status_bar.xml)

更改的地方:将原来的布局设置为隐藏,添加现在需要显示的布局。具体查看代码部分。

4.更改状态栏的高度,显示图标等。

将原来的:@*android:dimen/status_bar_height"替换为:@dimen/add_statusbar_hieght    //更改状态栏的高度 <全部替换>

在PhoneStatusBarView.makeStatusBarView()函数中:
将原来的:mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size); 替换为:mIconSize = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);        //替换ICon尺寸

dimens文件中:
将<dimen name="status_bar_icon_size">@*android:dimen/status_bar_icon_size</dimen>
替换为:
<dimen name="status_bar_icon_size">26px</dimen>

5.添加USB,SD,AUX,DISC图标的显示和刷新。

代码在:PhoneStatusBarView类中添加。
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39次
    • 积分:10
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档
    阅读排行
    评论排行