具有通用资源的Android库
我为一些UI实用程序编写了一个android库。我有一个返回ImageView的函数。但是,我的问题是,我希望可绘制图像的资源将位于包含库的项目中。我会解释 我希望ImageView始终采用源名称为:具有通用资源的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,并在文件中定义一些其他
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。库将能够访问此绘图表,因为它将是相同的资源