SystemUI浅析

原创 2016年06月01日 11:40:35

最近刚弄玩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类中添加。

systemui浅析

Android 4.0 ICS SystemUI浅析——SystemUI启动流程 . http://blog.csdn.net/yihongyuelan/article/details/76...
  • yoyo_0316
  • yoyo_0316
  • 2016年08月25日 23:37
  • 98

Android 5.0 SystemUI浅析

先上个Lollipop状态栏的截图: 可以看到5.0上面改动非常大,对比4.0源码也能看到代码差距比较大,本次目的是浅析,不探讨具体差别和改动后的代码结构,为了快速适应5.0...
  • benbenxiongzhi
  • benbenxiongzhi
  • 2015年01月06日 10:57
  • 6657

Android 4.0 SystemUI浅析——SystemUI启动流程

阅读Android 4.0源码也有一段时间了,这次是针对SystemUI的一个学习过程。本文只是对SystemUI分析的一个开始——启动流程的分析,网上有很多关于2.3的SystemUI的分析,可4....
  • u013467735
  • u013467735
  • 2015年03月19日 16:27
  • 363

Android 4.0 ICS SystemUI浅析——SystemUI启动流程

阅读Android 4.0源码也有一段时间了,这次是针对SystemUI的一个学习过程。本文只是对SystemUI分析的一个开始——启动流程的分析,网上有很多关于2.3的SystemUI的分析,可4....
  • sdgaojian
  • sdgaojian
  • 2013年09月01日 21:58
  • 480

android SystemUI浅析之SystemUI启动流程

前言:最近在研究4.2的status bar 和navigation bar,想做一下总结,后来碰到一篇文章分享一下,至于4.2上的变化以及4.2上的总结,我会在后期补充上并且会一直修改和完善。参考h...
  • jingerppp
  • jingerppp
  • 2013年08月12日 15:54
  • 2402

不重启调试SystemUI

先使用adb shell进入手机 修改系统目录的读写属性mount -o remount,rw -t ext4 /dev/block/mtd/by-name/system /system 再退出到cm...
  • zahuopuboss
  • zahuopuboss
  • 2016年03月09日 19:09
  • 1094

SystemUi->虚拟按键

在SystemUi中的PhoneStatusBar中的makeStatusBarView()方法中有如下代码 try { boolean showNav = mW...
  • liu149339750
  • liu149339750
  • 2016年02月29日 18:46
  • 1079

SystemUI 7.0学习笔记二-状态栏和导航栏

状态栏和导航栏的启动SystemUI学习笔记一中SERVICES中类的名字就可以大致猜出来它们的功能,对!本节的主角就是com.android.systemui.statusbar.SystemBar...
  • songjinghao
  • songjinghao
  • 2017年05月25日 16:23
  • 670

SystemUI源码分析

此篇文章针对android5.1 systemUI源码进行分析下面我们进行分析, 1.1 frameworks/base/packages/SystemUI/AndroidManifest.xml...
  • lz99770337
  • lz99770337
  • 2015年07月15日 11:03
  • 5037

SystemUI源码提取到eclipse中编译

SystemUI源码提取到eclipse中编译 SystemUI本身和系统的关联性比较大,在4.4以后,SystemUI和锁屏又整合在一起了。为了方便看代码和调试,将5.1的SystemUI提取出来(...
  • ff313976
  • ff313976
  • 2015年10月13日 11:14
  • 1889
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SystemUI浅析
举报原因:
原因补充:

(最多只允许输入30个字)