横向模式下URLImage的占位符缩放问题

时间:2016-02-05 04:53:38

标签: java codenameone

我将占位符缩放到屏幕大小,如下所示。但是如果它首先在纵向模式下观看,它只需要屏幕并且在横向模式下不会覆盖整个屏幕。如果在横向模式下第一次观看,则它在纵向模式下看起来比屏幕尺寸大。

如何解决此问题。我检查了PropertyCross演示,同样存在同样的问题。

$config['index_page'] = '';

更新:

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));

2 个答案:

答案 0 :(得分:1)

我建议将其设置为样式的bg图像,并将背景行为设置为SCALE_TO_FILLSCALE_TO_FIT

答案 1 :(得分:1)

您正在使用屏幕尺寸生成占位符图像,并且横向屏幕的宽度大于纵向。

如果您想要使图像响应,则必须添加方向更改侦听器,如果您来自纵向,则会下载另一个不同尺寸的图像,反之亦然。

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));
});