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

AutoView框架使得根据UI设计尺寸创建界面变得简单,但当遇到使用不同尺寸或复用设计稿的情况,需要手动测量和计算。为此,利用正则表达式编写了自动更新尺寸的代码,以解决这一问题。
摘要由CSDN通过智能技术生成

使用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 block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值