CodenameOne - 从应用程序捆绑资源中的嵌套文件夹层次结构访问图像

CodenameOne - accessing images from nested folder hierarchy in app bundled resources

我的 CodenameOne 应用程序需要某些按钮具有特殊图标。 ScaleImageButton 是合适的组件。 所用图标来自material图标库,但修改了一些,所以CN字体不合适。

我使用将 svg 转换为 java 类 的 Flamingo 工具创建了图标图像。 它很麻烦,但它可能有用且实用,但目前生成的 Java 类 不适用于 iOS.

它适用于 CN 模拟器和 Android 尽管按钮大小不准确:如果状态更改反映某些图标更改,布局将重新排列且不均匀。

在 iOS 上,除此之外,绘图在其视口中很大或很小,具体取决于分配给 Flamingo 图像的按钮大小。

saveIconImage=new SaveIcon().scaled(normalButtonSize,normalButtonSize).toImage();
saveButton=new ScaleImageButton(saveIconImage);

有一个未解决的问题,但解决方案可能需要几个月或永远的时间,如果有的话,至少对于这样一个小众问题。

所以我决定利用我明智地并行创建的本机 Swift XCode 版本的图标集。

它们被组织在嵌套的子文件夹中(如在 XCode 项目的 Assets.xcassets 中),当涉及到从 CodenameOne 中的应用程序包加载资源文件时,路径是特殊的扁平路径不喜欢 '/' 或 '.'字符。

现在他们有一个新的 Maven 构建系统,但我不知道是否有什么改变。

所以我问是否可以从包中的文件夹层次结构加载图像,以及它是如何在方法调用和路径字符串方面实现的。

执行此操作的“正确方法”是将图像添加到 res 文件,因为这是最便携的方法。您可以通过主题或在您的 CSS 中包含图像来实现,这两个选项都在 developer guide.

中讨论

您还可以为每个图标集创建一个单独的资源文件,您可以为其中的图标指定任何名称。

我们不支持代号一中的资产层次结构。 HTML 有一个特殊情况,它使用 TAR 来解决平台差异,但总的来说我们不允许这样做以避免平台之间的不同行为。