2

我有一个 .xml 文档,它是一个有效的 SVG 图像。

我想用不同的颜色加载这个图标。但我不能。

作为解决方案,首先我将 xml 文件作为字符串读取并使用简单的 String.replace() 替换颜色

现在我必须使用我的新 XML 内容创建一个 SVGIcon。

是否可以使用 SVG Salamander 库来做到这一点。

4

1 回答 1

0

使用 SVG 蝾螈:

从缓存中获取图表并调用递归搜索和替换:

SVGDiagram diagram = SVGCache.getSVGUniverse().getDiagram(uri);
setStroke(Color.BLACK, getHexString(Color.GREEN), diagram.getRoot());

功能代码:

private void setStroke(Color fromColor, String toColor, SVGElement node) throws SVGException {
    if (node.hasAttribute("stroke", AnimationElement.AT_CSS)) {
        StyleAttribute abs = node.getStyleAbsolute("stroke");
        Color was = abs.getColorValue();
        if (was.equals(fromColor)) {
            abs.setStringValue(toColor);
        }
    }
    for (int i = 0; i < node.getNumChildren(); ++i) {
        setStroke(fromColor, toColor, node.getChild(i));
    }
}

private String getHexString(Color color) {
    return String.format("#%06x", (0xFFFFFF & color.getRGB()));
}
于 2015-01-06T12:46:00.847 回答