Android:访问“system”-drawables

时间:2011-02-03 20:51:57

标签: android drawable

我正在开发一款应用程序来显示电池状态,我想使用Android-drawables代替自己的图片来减少应用程序的大小。

我找到了此页面,其中列出了每个SDK版本的可用图片和可用性:
http://www.fixedd.com/projects/android_drawables_display

我的问题:如何访问“系统” - 抽屉?如果你单击链接并选择“状态”选项卡,有一些像“stat_sys_battery_0”这样的电池可用,但我无法访问它,Eclipse不提供intellisense,如果我不编译应用程序使用其中一个drawables。

由于这些drawable是所有SDK版本的一部分,我认为我应该能够使用它们,或者那些“特殊”drawable以某种方式受到保护,因此它们只能被系统函数使用(而不是应用)?

任何想法都表示赞赏。

Select0r

3 个答案:

答案 0 :(得分:4)

希望这就是你要找的东西:

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context arg0, Intent intent) {

        int level = intent.getIntExtra("level", 0);

        int batteryIconId = intent.getIntExtra("icon-small", 0);
        Button toolBarBattery = (Button) findViewById(R.id.toolBarButton);

        LevelListDrawable batteryLevel = (LevelListDrawable) getResources().getDrawable(batteryIconId);
        batteryLevel.setLevel(level);

        toolBarBattery.setBackgroundDrawable(batteryLevel);

    }
};

答案 1 :(得分:2)

我发现另一个链接信息并非所有drawables都是公开的。它没有说为什么某些drawables是私有的,但我想我将不得不忍受这个事实并将所需的图像复制到我的应用程序。
http://androiddrawableexplorer.appspot.com/ < / p>

  

注意:Android jar中的某些图像不是公共的,因此不能直接使用(您可以将它们复制到您自己的应用程序,但不能通过“android”包命名空间引用它们。)

答案 2 :(得分:1)

实际上似乎有一种方法可以访问系统图标,但它并没有按照文档中的说明进行操作,但我会添加它以防有人感兴趣:

intent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL, -1)

将获取与当前电池状态匹配的图标的资源ID:
http://developer.android.com/reference/android/os/BatteryManager.html#EXTRA_ICON_SMALL

  

ACTION_BATTERY_CHANGED额外:   包含资源ID的整数   一个小的状态栏图标表示   目前的电池状态。

但是,无论实际电池电量是多少,它都会返回相同的图标。通过尝试随机数来查找图标可能会有效,但我不知道这些ID在整个SKD级别以及不同的机器上是否一致,所以我宁愿不依赖它。