AutoView自动为旧设计稿更新新设计稿尺寸

来源:互联网 发布:旅游英语口语速成软件 编辑:程序博客网 时间:2024/06/05 22:56

使用AutoView适配框架适配Ui的时候,可以直接根据ui设计的尺寸做界面。

但是坑爹的Ui, 在设计时如果使用两种不同尺寸的设计稿,或者复用不同尺寸的设计稿,那在处理时,就需要花一番功夫测量设计稿,再重新计算,故根据正则表达式做了自动更新的代码。

public class AutoSizeUtils {public static void main(String[] args) {String dir = "D:\\convert\\original";//原目录readDir(dir);}private static void readDir(String dir) {File file = new File(dir);//读取目录String[] list = file.list();for(String path: list) {readFiles(dir, path);}}private static void readFiles(String dir, String name) {int num = 0;try {File f = new File("D:\\convert\\result" + "\\" + name);//目标文件 更换了路径//FileReader fr=new FileReader(dir + "\\" + name);//直接使用FileReader读写会导致读写中文乱码InputStreamReader reader = new InputStreamReader(new FileInputStream(dir + "\\" + name),"UTF-8");//防止中文乱码BufferedReader br = new BufferedReader(reader);FileWriter fw = new FileWriter(f);BufferedWriter bw = new BufferedWriter(fw);String line;while((line=br.readLine())!=null){//判断是否是最后一行System.out.println(num++ + line);//输出每一行内容。            String newline = convert(line);                bw.write(newline, 0, newline.length());                bw.newLine();}   bw.flush();   reader.close();      br.close();   bw.close();   fw.close();   } catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} }/** * 正则匹配 修改尺寸 * @param msg * @return */    private static String convert(String msg) {        String regex = "\\D*[=]{1}[\"][0-9]+px[\"]\\D*";        boolean b = Pattern.compile(regex).matcher(msg).matches();        if(b) {            int first = msg.indexOf("=\"");            int last = msg.indexOf("px\"");            String s = msg.substring(first + 2, last);            int i = (int) (Integer.parseInt(s) * 1.17);//修改尺寸的比率   比如 1.17 边距大小增加0.17倍             msg = msg.replace(s, String.valueOf(i));//重新赋值        }        return msg;    }}

希望能帮助有用的朋友,不要像我前期一样傻呵呵的想着重新测量计算。

0 0
原创粉丝点击