使用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;
}
}
希望能帮助有用的朋友,不要像我前期一样傻呵呵的想着重新测量计算。