我问了一个关于在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
获得相同的可绘制内容吗?
感谢任何帮助。
答案 0 :(得分:3)
在应用中使用静态ID是否安全,或者可以在整个SDK级别或不同设备上更改drawable-ID?
我不会依赖它们。而且,我甚至不依赖于图标。在您的应用中拥有自己的电池电量图标,并使用它们。设备制造商可以更改图标,这意味着它们可能会或可能不会以您期望的方式显示(或调整大小)。
有人知道为什么我一直从getIntExtra获得相同的drawable吗?
可能是因为图标与电池电量无关。查看源代码,它将为您提供:
stat_sys_battery_charge
如果电池正在充电stat_sys_battery
如果电池正在放电,未充电或已满stat_sys_battery_unknown
否则