如何在delphi中获得可绘制的资源ID?

时间:2017-04-18 22:55:31

标签: android delphi firemonkey

在Delphi中,我将图像资源添加到项目中(通过项目>资源和图像),但是我需要一个java函数在应用程序的drawable包中提供资源ID才能使用。是否可以从我的delphi资源文件或名称中检索资源ID(整数)?

如果没有,我们如何在delphi中添加自定义资源图像并检索它的资源ID?

1 个答案:

答案 0 :(得分:5)

获取资源ID

要检索资源的资源ID:

id := TAndroidHelper.GetResourceID('my_image', 'drawable');

如果您使用的是较旧版本的Delphi,则可能需要使用备用的旧方法:

id := TAndroidHelper.Context.getResources.getIdentifier(StringToJString('my_image'), StringToJString('drawable'), TAndroidHelper.Context.getPackageName);

较短的,更新的(和方便的)GetResourceID函数仅仅是较早的较长版本的包装。

在任何一种情况下,my_image都是您需要其ID的图像资源的文件名(不带扩展名)。

drawable参数告诉助手它是您要求的可绘制资源ID(例如,与stringlayout相对)。

添加图像资源

要向项目添加自定义图像资源,请使用IDE中项目菜单的部署选项。

添加文件并将remote路径设置为合适的可绘制资源文件夹,例如:

res\drawable
res\drawable-xxhdpi

etc

您可以将自己的缩放版图像放在每个可绘制文件夹中以获得不同的分辨率。 remote_name在每种情况下都必须相同。特定的drawable文件夹确​​定适用的设备分辨率。

或者,您可以简单地提供一个适当的高分辨率文件。您可以将其放在适当的高分辨率文件夹(例如drawable-xxxhdpi)或仅放在drawable中。

无论哪种方式,Android都会根据需要在运行时自动缩放图像以获取其他设备分辨率。

关于可绘制缩放的主题有很多Android参考,不同显示类型的替代版本等,包括the Android documentation itself of course

引用您的评论,但是添加简单图像的drawable不需要XML文件。

其他类型的可绘制资源可能需要额外的XML ,但这在很大程度上取决于您的特定需求的性质。

全力以赴

在下面的屏幕截图中,突出显示的条目是我为PNG图像资源添加的条目。该文件位于我的项目文件夹中,因此没有本地路径(第一列)。

enter image description here

文件名为appstore.png,我已将部署配置为将该文件的一个副本放在res\drawable' folder of the application when it is deployed (the remote`文件夹中。

此文件将依赖于自动缩放以在不同分辨率设备上显示。

要获取该资源的资源ID,我只需写下:

id := TAndroidHelper.GetResourceID('appstore', 'drawable');