在Delphi中,我将图像资源添加到项目中(通过项目>资源和图像),但是我需要一个java函数在应用程序包中提供一个资源ID来使用。是否可以从我的delphi资源文件或名称中检索资源ID (整数)?
如果不是,我们如何在delphi中添加自定义资源映像并检索它的资源ID?
发布于 2017-04-19 00:28:58
获取资源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 (例如,与string
或layout
相反)。
添加图像资源
若要向项目添加自定义映像资源,请使用IDE中的项目菜单的部署选项。
添加文件并将remote
路径设置为合适的可绘制资源文件夹,例如:
res\drawable
res\drawable-xxhdpi
etc
您可以将图像的缩放版本放置在每个可绘制的文件夹中,以获得不同的分辨率。在每种情况下,remote_name
必须是相同的。特定的可绘制文件夹确定适用的设备解析。
或者,您可以简单地提供一个适当的高分辨率文件。您可以将其放置在适当的高分辨率文件夹(例如drawable-xxxhdpi
)中,也可以简单地放在drawable
中。
无论哪种方式,Android都将在运行时自动缩放图像,以便在必要时进行其他设备分辨率。
在可绘制缩放、不同显示类型的替代版本等方面,有大量的Android参考资料,包括当然,Android文档本身也是。
但是,在引用您的注释时,不需要XML文件来添加直观的图像。
其他类型的可提取资源可能需要额外的XML,但这将在很大程度上取决于特定需求的性质。
把一切都聚集在一起
在下面的屏幕截图中,突出显示的条目是我为PNG图像资源添加的。该文件位于“我的项目”文件夹中,因此没有本地路径(第一列)。
文件名为appstore.png
,我已经将部署配置为将该文件的一个副本放在res\drawable' folder of the application when it is deployed (the
远程文件夹中)。
此文件将依靠自动缩放在不同分辨率设备上显示。
要获得该资源的资源ID,我只需编写:
id := TAndroidHelper.GetResourceID('appstore', 'drawable');
https://stackoverflow.com/questions/43483523
复制