【问题标题】:How in delphi can i get a drawable resource ID?我如何在 delphi 中获取可绘制资源 ID?
【发布时间】:2017-04-18 22:55:30
【问题描述】:

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

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

【问题讨论】:

  • 查看项目设置下的部署部分。该页面允许您添加应用可以使用的“自定义文件夹”
  • 是的,我想我需要进行自定义部署,但是我需要添加的文件夹有问题吗?可绘制-xxxhdpi-v4 ?可绘制-ldrtl-xxxhdpi-v17 ?可绘制-v23 ?可绘制-hdpi-v4?等...之后如何检索资源ID?我想我还需要制作一个 xml 文件,但不知道如何..

标签: android delphi firemonkey


【解决方案1】:

获取资源 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 中 Project 菜单的 Deployment 选项。

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

res\drawable
res\drawable-xxhdpi

etc

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

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

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

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

参考您的评论,但是添加简单图像的可绘制对象不需要 XML 文件。

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

把所有东西放在一起

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

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

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

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

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

【讨论】:

  • 谢谢!非常明确和好的答案!我不知道我们不需要提供一个 xml 文件(即:value.xml)来引用 .png ......因为这个我看了这么久:(
猜你喜欢
  • 2014-04-25
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多