Пользователь svg изображения в GWT ClientBundle (ImageBundle)

Я обычно использую GWT ClientBundle для управления своими изображениями в моем приложении, как это

@Source("icons/info.png")
ImageResource info();

Нет, я хочу переключиться на графику.svg, но я не нашел способа использовать svg в ClientBundle, как SVGResource или что-то в этом роде. Я знаю, что svg поддерживается в GWT, и есть возможность вставить эту графику в GWT, но я хотел бы использовать преимущества ClientBundle + преимущества svg. Кто-нибудь уже решил эту проблему?

2 ответа

Решение

ImageResource для растровых изображений, которые компилятор GWT может оптимизировать тем или иным способом, и вы можете запросить их размер.

Для векторных изображений, таких как SVG, вы можете просто использовать DataResource с @MimeType("image/svg+xml") аннотаций.

@Source("icons/info.svg")
@MimeType("image/svg+xml")
DataResource info();

Обратите внимание, что вы не можете использовать @sprite в CssResource затем, но вы можете получить URL ресурса для использования, например, в background-image с помощью @url,
Вы не можете передать ресурс Image виджет тоже, но тогда вы можете просто передать его getSafeUri(),


Если вы хотите использовать SVG-контент вместо использования его в качестве URL-адреса изображения, вы можете использовать TextResource, Вы должны будете передать это как setInnerHTML к элементу или setHTML на виджет, чтобы получить его в браузере.

Есть LIB-GWT-SVG. Он поддерживает последнюю версию GWT (2.7.0) и кажется зрелым.

Они реализовали интеграцию SVG с UIBinder и добавили класс SVGResource, который вы можете связать так же, как ImageResource

@Source(...)
SVGResource bundledResource;
Другие вопросы по тегам