我有一个.xml文档,它是一个有效的SVG图像。
我想加载不同颜色的图标。但我不能。
作为解决方案,我首先将xml文件作为字符串读取,并使用简单的String.replace()替换颜色
现在我必须使用我的新XML内容创建一个SVGIcon。
使用SVG Salamander库是否可行。
答案 0 :(得分:0)
使用SVG Salamander:
从缓存中获取图表并调用递归搜索并替换:
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()));
}