当前位置: 首页 > news >正文

东莞网站推广企业微网站 微信

东莞网站推广企业,微网站 微信,邢台做网站建设优化制作公司金信,如何跟建网站的人员沟通自己写一个svg转化为安卓xml的工具类_张风捷特烈的博客-CSDN博客 svg资源阿里巴巴矢量资源网站:iconfont-阿里巴巴矢量图标库 感觉一般的svg到Android可用的xml差异有点规律,主要的就是path 秉承着能用代码解决的问题,绝对不动手。能够靠智商解决的问题…

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

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

1.样例svg

<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg t="1540950990615" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10665" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48"><defs><style type="text/css"></style></defs><path d="M257.22 814.53a36.46 36.46 0 0 1-25.78-62.24L471.73 512 231.44 271.71A36.46 36.46 0 0 1 283 220.15l246.77 246.73a63.83 63.83 0 0 1 0 90.2L283 803.85a36.35 36.35 0 0 1-25.78 10.68z" fill="#42494F" p-id="10666"></path><path d="M512 814.53a36.46 36.46 0 0 1-25.78-62.24L726.47 512 486.18 271.71a36.46 36.46 0 0 1 51.56-51.56l246.77 246.73a63.66 63.66 0 0 1 0 90.2L537.75 803.85A36.35 36.35 0 0 1 512 814.53z" fill="#42494F" p-id="10667"></path>
</svg>

2.转化成的Android可用的xml

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"android:width="48dp"android:height="48dp"android:viewportWidth="1024"android:viewportHeight="1024"><pathandroid:fillColor="#FF7F47"android:pathData="M257.22 814.53a36.46 36.46 0 0 1-25.78-62.24L471.73 512 231.44 271.71A36.46 36.46 0 0 1 283 220.15l246.77 246.73a63.83 63.83 0 0 1 0 90.2L283 803.85a36.35 36.35 0 0 1-25.78 10.68z"/><pathandroid:fillColor="#FF7F47"android:pathData="M512 814.53a36.46 36.46 0 0 1-25.78-62.24L726.47 512 486.18 271.71a36.46 36.46 0 0 1 51.56-51.56l246.77 246.73a63.66 63.66 0 0 1 0 90.2L537.75 803.85A36.35 36.35 0 0 1 512 814.53z"/>
</vector>


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

 /*** 将.svg文件转换为安卓可用的.xml** @param file 文件路径*/public static void svg2xml(File file) {if (!file.exists() && file.isDirectory()) {return;}FileWriter fw = null;FileReader fr = null;ArrayList<String> 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));}//收集所有pathcollectPaths(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<String> paths) {StringBuilder outSb = new StringBuilder();outSb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +"<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" +"        android:width=\"48dp\"\n" +"        android:height=\"48dp\"\n" +"        android:viewportWidth=\"1024\"\n" +"        android:viewportHeight=\"1024\">\n");for (String path : paths) {outSb.append("    <path\n" +"        android:fillColor=\"#FF7F47\"\nandroid:pathData=");outSb.append(path);outSb.append("/>");}outSb.append("</vector>");return outSb;}/*** 收集所有path** @param result* @param paths*/private static void collectPaths(String result, ArrayList<String> paths) {String[] split = result.split("<path");for (String s : split) {if (s.contains("path")) {int endIndex;if (!s.contains("fill")) {endIndex = s.indexOf("p");} else {endIndex = Math.min(s.indexOf("f"), s.indexOf("p"));}String path = s.substring(s.indexOf("\""), endIndex);paths.add(path);}}}
转换一个文件夹里的所有svg图片
/*** 将一个文件夹里的所有svg转换为xml** @param filePath*/
public static void svg2xmlFromDir(String filePath) {File file = new File(filePath);if (file.isDirectory()) {File[] files = file.listFiles();for (File f : files) {if (f.getName().endsWith(".svg")) {System.out.println(f);svg2xml(f);}}} else {svg2xml(file);}
}


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

http://www.yayakq.cn/news/501860/

相关文章:

  • wordpress 网站源码vps docker wordpress
  • 链接网站怎么做旅游管理网站业务模块
  • 衡阳市城市建设投资有限公司网站备案网站建设
  • 人社系统网站一体化建设方案网站开发维护工作
  • 贤邦网站建设app开发网站建设需要上传数据库吗
  • 深圳网站ui设计一款app是如何制作出来的
  • 镇平县建设局网站中小企业网站建设济南兴田德润厉害吗
  • 欢迎访问中国建设银行网站个人客户百度q3财报2022
  • 域名价格查询网站婚庆租车
  • 网站还没完成 能备案吗wordpress添加友链申请
  • 工程建设最好的网站网站建设相关费用预算推广
  • 怎样做境外网站上赚钱wordpress自定义搜索功能
  • 北京做网站公司哪家好陈铭生是什么小说
  • 网站框架模板马蹄室内设计官网
  • php网站开发实例教材ps如何做网页设计
  • 建设悦生活网站新闻发稿公司
  • php网站建设全程实例个人网站做什么类型的
  • 猫扑网站开发的游戏鹤壁哪里做网站
  • 邯郸网站建设项目做网站需要好多图片
  • 在直播网站做前端注意长沙网站建设规划
  • 网站站长seo推广手机网站用什么后台
  • 百度网站优化是什么意思网络推广网站培训班
  • 网站的总规划书做自行车车队网站的名字
  • WordPress资讯站点源码wordpress 删除后台登录logo
  • 悬赏做logo的网站中小学网站建设建议
  • 地方门户网站如何宣传php网站开发 薪资 东莞
  • 寻网站开发人员合作如何让别人浏览我做的网站
  • elision豪华级创意企业中文wordpress主题整站钓鱼网站网址大全
  • 怎么学好网站开发建设教育网站怎么样
  • 西安机场商务宾馆百度做网站医疗手机网站建设