Android StatusBar增加图标

来源:互联网 发布:linux蓝牙传命令 编辑:程序博客网 时间:2024/05/16 19:01

文件中加资源:

. frameworks\base\core\res\res\drawalbe 中添加系统图标的图片资源

. frameworks\base\core\res\res\values\config.xml 中添加图片引用,这些 icon 在这个 string array 的位置就决定了其在 status bar 上显示的位置了。我们可以从 code 里面得出该结论。所以当你要调换 icon 的顺序时,改动这个 config.xml 就可以了。在 StatusBarManagerService 初始化的时候就会读取 config.xml  icons  String array 

这个文件中加代码: systemui/status/bar/phone/PhoneStatusBarPolicy.java 以闹钟为例。

.  PhoneStatusBarPolicy.java 中初始化所增加的系统图标

. 在构造函数中 SetIcon

. StatusBarPolicy 调用 registerReceiver 注册了感兴趣的 intent, 当感兴趣的 intent 发生时,对图标进行更新。例如,设置一个闹钟后,闹钟模块会发出一个叫做 Intent.ACTION_ALARM_CHANGED 的广播,然后 StatusBarPolicy接收到此广播,继而更新状态栏上的闹钟图标。

………

// Alarm clock StatusBarPolicy 构造方法中初始化闹钟图标

mService.setIcon("alarm_clock",R.drawable.stat_notify_alarm, 0);

mService.setIconVisibility("alarm_clock", false);

……..

// StatusBarPolicy 构造方法中注册闹钟改变广播

filter.addAction(Intent.ACTION_ALARM_CHANGED);

…....

. 添加 图标更新函数

private final void updateAlarm(Intent intent) {

boolean alarmSet = intent.getBooleanExtra(“alarmSet”, false);

mService.setIconVisibility(“alarm_clock”, alarmSet);

}

以上是在状态栏添加显示的系统图标的步骤。


代码执行步骤:

StatusBarManagerService.java 

StatusBarIconList mIcons = new StatusBarIconList();

………

          mIcons.defineSlots(res.getStringArray(com.Android.internal.R.array.config_statusBarIcons));

          StatusBarPolicy.java -- > setIcon(…)

          StatusBarManager.java -- > setIcon(…)

          StatusBarManagerService.java -- > setIcon(…)

在 StatusBarService onCreate 的时候调用StatusBarManagerService 中的 registerStatusBar (…)

Statusbar 中的控制开关会做详细的描述,这里就不在赘述。

0 0
原创粉丝点击