具有通用资源的Android库

具有通用资源的Android库,android,embedded-resource,android-resources,android-drawable,Android,Embedded Resource,Android Resources,Android Drawable,我为一些UI实用程序编写了一个android库。我有一个返回ImageView的函数。但是,我的问题是,我希望可绘制图像的资源将位于包含库的项目中。我会解释 我希望ImageView始终采用源名称为:R.drawable.ic_img_logo(并且仅使用此名称)的drawable。此资源实际上不在库中。但是包含库的项目也将包含具有资源名称R.drawable.ic\u img\u徽标的drawable 我知道这件事与id(视图)一起工作,您可以创建文件调用ids.xml,并在文件中定义一些其他

我为一些UI实用程序编写了一个android库。我有一个返回ImageView的函数。但是,我的问题是,我希望可绘制图像的资源将位于包含库的项目中。我会解释

我希望ImageView始终采用源名称为:
R.drawable.ic_img_logo
(并且仅使用此名称)的drawable。此资源实际上不在库中。但是包含库的项目也将包含具有资源名称
R.drawable.ic\u img\u徽标的drawable

我知道这件事与id(视图)一起工作,您可以创建文件调用
ids.xml
,并在文件中定义一些其他人可以使用的id,您将识别它们。

但是如何使用可绘制文件来实现这一点呢?

如果可绘制文件不在库中,那么它就不是资源

另一种方法是从资产中访问它,如下所示:

Drawable d = Drawable.createFromStream(getAssets().open(path_in_assets), null);

其中,资产中的路径是一个常量。

您必须将文件命名为ic\u img\u logo

我找到了答案。您需要在库中创建一个名为
drawables.xml
的文件。然后在里面写:

<resource>
    <item name="ic_img_logo" type="drawable" />
</resource>

它使假资源
R.drawable.ic\u img\u logo
。然后,如果包含库的项目具有名为
ic\u img\u logo
的drawable。库将能够访问此绘图表,因为它将是相同的资源