自己写一个svg转化为安卓xml的工具类

自己写一个svg转化为安卓xml的工具类_张风捷特烈的博客-CSDN博客

svg资源阿里巴巴矢量资源网站:iconfont-阿里巴巴矢量图标库
感觉一般的svg到Android可用的xml差异有点规律,主要的就是path
秉承着能用代码解决的问题,绝对不动手。能够靠智商解决的问题,绝对不靠体力的大无畏精神:
写段代码批处理一下,要比一个一个在网上转换方便一些。

1.样例svg



 
    
        
    
 
    
    
    
    
    

2.转化成的Android可用的xml



    
    


一、转换一个svg文件的代码:
   

 /**
     * 将.svg文件转换为安卓可用的.xml
     *
     * @param file 文件路径
     */
    public static void svg2xml(File file) {
        if (!file.exists() && file.isDirectory()) {
            return;
        }
 
        FileWriter fw = null;
        FileReader fr = null;
        ArrayList paths = new ArrayList<>();
        try {
            fr = new FileReader(file);
 
            //字符数组循环读取
            char[] buf = new char[1024];
            int len = 0;
            StringBuilder sb = new StringBuilder();
            while ((len = fr.read(buf)) != -1) {
                sb.append(new String(buf, 0, len));
            }
 
            //收集所有path
            collectPaths(sb.toString(), paths);
            //拼接字符串
            StringBuilder outSb = contactStr(paths);
            //写出到磁盘
            File outFile = new File(file.getParentFile(), file.getName().substring(0, file.getName().lastIndexOf(".")) + ".xml");
            fw = new FileWriter(outFile);
            fw.write(outSb.toString());
 
            System.out.println("OK:" + outFile.getAbsolutePath());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (fw != null) {
                    fw.close();
                }
                if (fr != null) {
                    fr.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
 
    /**
     * 拼接字符串
     *
     * @param paths
     * @return
     */
    private static StringBuilder contactStr(ArrayList paths) {
        StringBuilder outSb = new StringBuilder();
        outSb.append("\n" +
                "\n");
 
        for (String path : paths) {
            outSb.append("    ");
        }
 
        outSb.append("");
        return outSb;
    }
 
    /**
     * 收集所有path
     *
     * @param result
     * @param paths
     */
    private static void collectPaths(String result, ArrayList paths) {
        String[] split = result.split("


将xml放在drawable目录下,就可以当资源文件用了,大小颜色都可以操作
————————————————
版权声明:本文为CSDN博主「张风捷特烈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_30447263/article/details/83594228

你可能感兴趣的:(gitee)