如何从动态创建的(Java)层列表/LayerDrawable中获取Android资源ID?

如何从动态创建的(Java)层列表/LayerDrawable中获取Android资源ID?,android,drawable,layer,resource-id,Android,Drawable,Layer,Resource Id,本问答帖子中的“解决方案2(动态)”: 非常接近我想要做的事情,即动态创建一个层列表(对于状态栏通知图标,我想在层中构建我的图标),但是通知API中的图标分配需要一个资源ID(我想从服务调用) 如果不构建数百个layer list.xml文件(用于我希望能够显示的各种图标组合),我无法理解如何动态构建层列表。Daniel的“解决方案#1”非常适合静态.xml文件,但我正在寻找一个更优雅、动态的解决方案 在上面的文章中,代码片段: Resources r = getResources();

本问答帖子中的“解决方案2(动态)”:

非常接近我想要做的事情,即动态创建一个层列表(对于状态栏通知图标,我想在层中构建我的图标),但是通知API中的图标分配需要一个资源ID(我想从服务调用)

如果不构建数百个layer list.xml文件(用于我希望能够显示的各种图标组合),我无法理解如何动态构建层列表。Daniel的“解决方案#1”非常适合静态.xml文件,但我正在寻找一个更优雅、动态的解决方案

在上面的文章中,代码片段:

  Resources r = getResources();

  Drawable[] layers = new Drawable[2]; 

  layers[0] = r.getDrawable(R.drawable.t);

  layers[1] = r.getDrawable(R.drawable.tt);

  LayerDrawable layerDrawable = new LayerDrawable(layers);
这似乎是我想要的,但我不知道或不理解如何将新的layerDrawable“分配”到我的通知图标(它采用资源ID)


感谢大家…stackoverflow是一个很棒的资源

没有在运行时创建的可绘制文件的ID。这些ID指的是R类中的int字段,由xml文件自动创建。

由于LayerDrawable构造函数只需要一个可绘制数组,因此可以提供由任何方法生成的可绘制数组。例如,静态方法
Drawable.createFromStream(InputStream是,字符串srcName)

使用“getIdentifier”获取它。假设我在“/res/drawable/”中有一个文件bug.png,那么我使用以下代码获取它的ResourceID:

int resID = getResources().getIdentifier("org.anddev.android.testproject:drawable/bug", null, null);
//或

参考资料:

谢谢你,阿莱亚当(亚当?)!抱歉,我之前没有看到您的答复;)。从您的第一句话中,我猜我只能将状态栏图标填充为静态创建的资源:(我希望有一种方法可以避免在layer list.xml文件中构建我所有的图标组合。干杯,再次感谢您的回复。--SeanI相信资源是引用通知图标的唯一方法。不过,您应该只需要为每个屏幕密度添加一个图标。
int resID = getResources().getIdentifier("bug", "drawable", "org.anddev.android.testproject");