横向模式下 URLImage 的占位符缩放问题
Placeholder scaling issue with URLImage in landscape mode
我将占位符缩放到屏幕大小,如下所示。但是,如果它首先以纵向模式查看,它只会占用屏幕,而不会在横向模式下覆盖整个屏幕。如果它是第一次在横向模式下查看,那么它看起来比纵向模式下的屏幕尺寸大。
我该如何解决这个问题。我检查了 PropertyCross 演示,那里也存在同样的问题。
private EncodedImage largePlaceholder;
protected void initVars(Resources res) {
Image tmp = Image.createImage(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayWidth() / 6 * 3, 0);
largePlaceholder = EncodedImage.createFromImage(tmp, false);
}
findMainImg(f).setIcon(URLImage.createToStorage(largePlaceholder, getMainImg + "_0_ y", getMainImg, URLImage.RESIZE_SCALE_TO_FILL));
已更新:
int sizethumb = 0;
int sizethumb1 = 0;
if (responsesImg.size() > 0) {
sizethumb = largePlaceholder.getWidth();
sizethumb1 = largePlaceholder.getHeight();
findMainImg().setPreferredSize(new Dimension(sizethumb, sizethumb1));
findMainImg(f).getAllStyles().setBgImage(URLImage.createToStorage(largePlaceholder, newsImgFilename + "_0_ y", responsesImg.get(0).get("image_url"), URLImage.RESIZE_SCALE));
mainImageImgViewer = findMainImg(f).getAllStyles().getBgImage();
System.out.println("beck0 " + mainImageImgViewer); //it gives null
我建议将其设置为样式的背景图像并将背景行为设置为SCALE_TO_FILL
或SCALE_TO_FIT
。
您正在使用屏幕尺寸生成占位符图像,横向屏幕的宽度大于纵向。
如果您想让图像响应,则必须添加方向更改侦听器,如果您来自纵向,它将下载另一张不同尺寸的横向图像,反之亦然。
private EncodedImage largePlaceholderPortrait;
private EncodedImage largePlaceholderLandscape;
private boolean isPortrait = Display.getInstance().isPortrait();
protected void initVars(Resources res) {
Image tmp = Image.createImage(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayWidth() / 6 * 3, 0);
Image tmp2 = Image.createImage(Display.getInstance().getDisplayHeight(), Display.getInstance().getDisplayHeight() / 6 * 3, 0);
largePlaceholderPortrait = EncodedImage.createFromImage(isPortrait ? tmp : tmp2, false);
largePlaceholderLandscape = EncodedImage.createFromImage(isPortrait ? tmp2 : tmp, false);
}
findMainImg(f).setIcon(URLImage.createToStorage(largePlaceholderPortrait, isPortrait ? getMainImg + "_0_y_portrait" : getMainImg + "_0_y_landscape", getMainImg, URLImage.RESIZE_SCALE_TO_FILL));
f.addOrientationListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
findMainImg(f).setIcon(URLImage.createToStorage(largePlaceholderPortrait, isPortrait ? getMainImg + "_0_y_portrait" : getMainImg + "_0_y_landscape", getMainImg, URLImage.RESIZE_SCALE_TO_FILL));
}
});
//Java 8
f.addOrientationListener((evt) -> {
findMainImg(f).setIcon(URLImage.createToStorage(largePlaceholderPortrait, isPortrait ? getMainImg + "_0_y_portrait" : getMainImg + "_0_y_landscape", getMainImg, URLImage.RESIZE_SCALE_TO_FILL));
});
我将占位符缩放到屏幕大小,如下所示。但是,如果它首先以纵向模式查看,它只会占用屏幕,而不会在横向模式下覆盖整个屏幕。如果它是第一次在横向模式下查看,那么它看起来比纵向模式下的屏幕尺寸大。
我该如何解决这个问题。我检查了 PropertyCross 演示,那里也存在同样的问题。
private EncodedImage largePlaceholder;
protected void initVars(Resources res) {
Image tmp = Image.createImage(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayWidth() / 6 * 3, 0);
largePlaceholder = EncodedImage.createFromImage(tmp, false);
}
findMainImg(f).setIcon(URLImage.createToStorage(largePlaceholder, getMainImg + "_0_ y", getMainImg, URLImage.RESIZE_SCALE_TO_FILL));
已更新:
int sizethumb = 0;
int sizethumb1 = 0;
if (responsesImg.size() > 0) {
sizethumb = largePlaceholder.getWidth();
sizethumb1 = largePlaceholder.getHeight();
findMainImg().setPreferredSize(new Dimension(sizethumb, sizethumb1));
findMainImg(f).getAllStyles().setBgImage(URLImage.createToStorage(largePlaceholder, newsImgFilename + "_0_ y", responsesImg.get(0).get("image_url"), URLImage.RESIZE_SCALE));
mainImageImgViewer = findMainImg(f).getAllStyles().getBgImage();
System.out.println("beck0 " + mainImageImgViewer); //it gives null
我建议将其设置为样式的背景图像并将背景行为设置为SCALE_TO_FILL
或SCALE_TO_FIT
。
您正在使用屏幕尺寸生成占位符图像,横向屏幕的宽度大于纵向。
如果您想让图像响应,则必须添加方向更改侦听器,如果您来自纵向,它将下载另一张不同尺寸的横向图像,反之亦然。
private EncodedImage largePlaceholderPortrait;
private EncodedImage largePlaceholderLandscape;
private boolean isPortrait = Display.getInstance().isPortrait();
protected void initVars(Resources res) {
Image tmp = Image.createImage(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayWidth() / 6 * 3, 0);
Image tmp2 = Image.createImage(Display.getInstance().getDisplayHeight(), Display.getInstance().getDisplayHeight() / 6 * 3, 0);
largePlaceholderPortrait = EncodedImage.createFromImage(isPortrait ? tmp : tmp2, false);
largePlaceholderLandscape = EncodedImage.createFromImage(isPortrait ? tmp2 : tmp, false);
}
findMainImg(f).setIcon(URLImage.createToStorage(largePlaceholderPortrait, isPortrait ? getMainImg + "_0_y_portrait" : getMainImg + "_0_y_landscape", getMainImg, URLImage.RESIZE_SCALE_TO_FILL));
f.addOrientationListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
findMainImg(f).setIcon(URLImage.createToStorage(largePlaceholderPortrait, isPortrait ? getMainImg + "_0_y_portrait" : getMainImg + "_0_y_landscape", getMainImg, URLImage.RESIZE_SCALE_TO_FILL));
}
});
//Java 8
f.addOrientationListener((evt) -> {
findMainImg(f).setIcon(URLImage.createToStorage(largePlaceholderPortrait, isPortrait ? getMainImg + "_0_y_portrait" : getMainImg + "_0_y_landscape", getMainImg, URLImage.RESIZE_SCALE_TO_FILL));
});