如果没有,我们如何在delphi中添加自定义资源图像并检索它的资源ID?
答案 0 :(得分:5)
要检索资源的资源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文件夹确定适用的设备分辨率。
或者,您可以简单地提供一个适当的高分辨率文件。您可以将其放在适当的高分辨率文件夹(例如drawable-xxxhdpi
)或仅放在drawable
中。
无论哪种方式,Android都会根据需要在运行时自动缩放图像以获取其他设备分辨率。
关于可绘制缩放的主题有很多Android参考,不同显示类型的替代版本等,包括the Android documentation itself of course。
引用您的评论,但是添加简单图像的drawable不需要XML文件。
其他类型的可绘制资源可能需要额外的XML ,但这在很大程度上取决于您的特定需求的性质。
在下面的屏幕截图中,突出显示的条目是我为PNG图像资源添加的条目。该文件位于我的项目文件夹中,因此没有本地路径(第一列)。
文件名为appstore.png
,我已将部署配置为将该文件的一个副本放在res\drawable' folder of the application when it is deployed (the
remote`文件夹中。
此文件将依赖于自动缩放以在不同分辨率设备上显示。
要获取该资源的资源ID,我只需写下:
id := TAndroidHelper.GetResourceID('appstore', 'drawable');