Автомасштабирование изображения в соответствии с шириной контейнера

Я пытаюсь создать приложение, похожее на Google+, где сообщение содержит изображение. Я использую макет коробки в качестве контейнера для изображения, но изображение не занимает ширину родителя и автоматически масштабирует высоту, чтобы сохранить соотношение сторон пикселя на 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, почему изображение не использует заданную ширину и соответственно масштабируется. Как видно из вывода, он централизован и уменьшен.

С уважением!


person evenmatrix    schedule 15.04.2014    source источник


Ответы (1)


Вы можете установить изображение как bgImage и выбрать параметр поведения фона как масштаб, чтобы он соответствовал пропорциям, отображая все изображение в доступном пространстве компонента.

Вы также можете просто получить масштабированную версию изображения, используя соответствующие методы класса Image.

person Shai Almog    schedule 15.04.2014