Codename One:从 URL 加载图像

3

我正在尝试使用Java和Codename One插件制作移动应用程序。我的问题是-将图片从URL填充到标签的最简单方法是什么?我在谷歌上搜索了一下,发现了以下的代码:

Image i = URLImage.createToStorage(placeholder, "fileNameInStorage", "http://xxx/myurl.jpg", URLImage.RESIZE_SCALE); 

但我不知道如何使用它。什么是 placeholder?它需要一个 EncodedImage 参数,但如果我这样做:

EncodedImage image = new EncodedImage(10, 10);

我遇到了一个错误,提示EncodedImage是受保护的。

我只是想将来自URL的图像填充到表单中我想要的标签中。

我正在使用GUI构建器。

1个回答

4

占位符图像是在从URL下载图像时应显示的图像,它是一个EncodedImage。

如果您的标签已经有了一个作为占位符的图标,您可以使用它的图标,否则您可以创建一个新的占位符图像。以下是创建EncodedImage和URLImage的3个选项以及用法示例:

方法1:

//generate a grey placeholder that matches the size of the label's icon
Image placeholder = Image.createImage(label.getIcon().getWidth(), label.getIcon().getWidth(), 0xbfc9d2);
EncodedImage encImage = EncodedImage.createFromImage(placeholder, false);

方法二:

//Convert the label icon to EncodedImage
EncodedImage encImage = (EncodedImage)label.getIcon();

方法三:

//Create a fresh grey EncodedImage when label doesn't have any icon set initially
int deviceWidth = Display.getInstance().getDisplayWidth();
Image placeholder = Image.createImage(deviceWidth / 10, deviceWidth / 10, 0xbfc9d2); //square image set to 10% of screen width
EncodedImage encImage = EncodedImage.createFromImage(placeholder, false);

使用示例:

在存储中,将URL用作缓存图像名称是一个好的实践。如果您有多种尺寸的相同图像,请使用唯一字符串作为前缀,例如"Large" + URL

 label.setIcon(URLImage.createToStorage(encImage, "Medium_" + "http://xxx/myurl.jpg", "http://xxx/myurl.jpg", URLImage.RESIZE_SCALE));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接