Пользователь 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;