我通常使用GWT ClientBundle在我的应用程序中管理我的图像
@Source("icons/info.png")
ImageResource info();
不,我想切换到.svg图形,但我没有找到在SVGResource之类的ClientBundle中使用svg的方法。我知道GWT支持svg,并且有可能在GWT中插入这些图形,但我想利用ClientBundle的优点+ svg的优点。 有人已经解决了这个问题吗?
答案 0 :(得分:13)
ImageResource
用于光栅图像,GWT编译器可以通过这种方式进行优化,您可以查询它们的大小。
对于像SVG这样的矢量图像,您只需使用带有DataResource
注释的@MimeType("image/svg+xml")
即可。
@Source("icons/info.svg")
@MimeType("image/svg+xml")
DataResource info();
请注意,您无法在@sprite
中使用CssResource
,但您可以使用background-image
@url
来获取要使用的资源的网址。<登记/>
您也无法将资源传递到Image
窗口小部件,但您可以通过其getSafeUri()
。
如果您想要SVG内容而不是将其用作图片网址,那么您可以使用TextResource
。您必须将其作为setInnerHTML
传递给元素,或将setHTML
传递给窗口小部件,以便浏览器对其进行解析。
答案 1 :(得分:3)
有LIB-GWT-SVG。它支持最新的GWT版本(2.7.0)并且看起来很成熟。
他们实施了SVG integration with UIBinder并添加了SVGResource类,您可以像ImageResource一样捆绑
@Source(...)
SVGResource bundledResource;