Android:系统drawables有静态ID吗?

时间:2011-02-12 20:33:13

标签: android drawable

我问了一个关于在Android应用中使用system-drawables的问题:
Android: access "system"-drawables

我终于发现,实际上有一种方法可以访问那些drawable,但特别是关于电池图标,有一个问题:它没有按预期工作。 :)

例如尝试使用R.drawable.stat_sys_battery_0处理“空电池” - 图标无效,我发现:intent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL, -1)实际上确实返回了“stat_sys_battery_0”的整数ID,让我来访问它,但是文档声明应该返回“指示当前电池状态的图标”。但实际上,无论电池电量是多少,我都始终获取空电池的图标。这种情况发生在模拟器和手机上。

我尝试了什么:
我从getIntExtra获得的drawable-ID是“17302150”(在模拟器和手机中)。使用此ID,我得到“空电池” - 图标。我玩了ID,并通过使用随机ID找到了一些其他的电池图标,所以我的想法只是尝试找到所有需要的图标的ID,并将它们静态地放入我的代码中。

现在,有两个问题:
1.在应用程序中使用静态ID是否安全,或者可以在SDK级别或不同设备上更改drawable-ID? 2.因为这只是一个解决方法:有人知道为什么我会从getIntExtra获得相同的可绘制内容吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

  

在应用中使用静态ID是否安全,或者可以在整个SDK级别或不同设备上更改drawable-ID?

我不会依赖它们。而且,我甚至不依赖于图标。在您的应用中拥有自己的电池电量图标,并使用它们。设备制造商可以更改图标,这意味着它们可能会或可能不会以您期望的方式显示(或调整大小)。

  

有人知道为什么我一直从getIntExtra获得相同的drawable吗?

可能是因为图标与电池电量无关。查看源代码,它将为您提供:

  • stat_sys_battery_charge如果电池正在充电
  • stat_sys_battery如果电池正在放电,未充电或已满
  • stat_sys_battery_unknown否则