图像自动缩放以适合容器的宽度

时间:2014-04-15 13:47:04

标签: java android codenameone

我正在尝试创建一个谷歌+喜欢的应用程序是一个包含图像的帖子。我使用框布局作为图像的容器,但图像不占用父图像的宽度,并自动缩放高度以保留android上的像素纵横比,如google plus。我可以使用css规则在浏览器上通过将图像的最大宽度设置为100%来实现此目的。

为了更好地理解这一点,请参阅下面的代码

 private void loadImageArea(){
        BundleContext context=getBundleContext();
        UIBuilder builder=context.getUIBuilder();
        Container boxHeader=(Container) builder.findByName("contentWrap", getForm());
        Container imageWrap=(Container) builder.findByName("imageWrap", getForm());
        Label imageLabel=new Label();
        imageLabel.setUIID("ImageLabel");
        Image icon=getImage();
        ImageIO io;
        URLImage img;
        Image dst=null;
        int containerWidth=Display.getInstance().getDisplayWidth()-       boxHeader.getStyle().getPadding(Component.LEFT)-boxHeader.getStyle().getPadding(Component.RIGHT);
        int width=icon.getWidth();
            if(width>containerWidth){
            Log.p("Container width: "+containerWidth);
            width=containerWidth;
            dst=icon.scaledWidth(width);
        }
        imageLabel.setIcon(dst); 
        imageWrap.removeAll();
        imageWrap.addComponent(imageLabel);
    }

1)在模拟器上,它在我计算并设置图像的缩放宽度后工作,因为父容器返回宽度为零。缩放也非常差并且像素化。我试图在双鱼座之上实现一些过滤算法以获得更好的结果,不确定性能和内存,但会尝试 2)在Android上,为什么图像不使用设置的宽度并相应地缩放。从输出中可以看出,它是集中式和缩小的。

亲切的问候!

1 个答案:

答案 0 :(得分:0)

您可以将图像设置为bgImage,并选择选项背景行为作为适合的比例,这将保留纵横比,同时在组件的可用空间中显示整个图像。

您还可以使用Image类的相应方法获取图像的缩放版本。