很多公司ui为了兼容Android和iOS,切的图都是按照iPhone6的尺寸来切的一倍图,而且都是px为单位的,我们使用的时候还需要进行转换,很麻烦,iPhone6的尺寸对应Android的xhdpi。所以自己就写了一个java工具类直接来生成demins文件。
public class MyClass {
private static final String mPath = "./src/wxz/dimens-m.xml";
private static final String hPath = "./src/wxz/dimens-h.xml";
private static final String xhPath = "./src/wxz/dimens-xh.xml";
private static final String xxhPath = "./src/wxz/dimens-xxh.xml";
private static final String xxxhPath = "./src/wxz/dimens-xxxh.xml";
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.createDimens();
}
private void createDimens() {
System.out.println("createDimens: start");
try {
File mFile = new File(mPath);
File hFile = new File(hPath);
File xhFile = new File(xhPath);
File xxhFile = new File(xxhPath);
File xxxhFile = new File(xxxhPath);
if (!mFile.exists()) {
mFile.createNewFile();
}
if (!hFile.exists()) {
hFile.createNewFile();
}
if (!xhFile.exists()) {
xhFile.createNewFile();
}
if (!xxhFile.exists()) {
xxhFile.createNewFile();
}
if (!xxxhFile.exists()) {
xxxhFile.createNewFile();
}
FileWriter mWriter = new FileWriter(mFile);
FileWriter hWriter = new FileWriter(hFile);
FileWriter xhWriter = new FileWriter(xhFile);
FileWriter xxhWriter = new FileWriter(xxhFile);
FileWriter xxxhWriter = new FileWriter(xxxhFile);
BufferedWriter mBuffer = new BufferedWriter(mWriter);
BufferedWriter hBuffer = new BufferedWriter(hWriter);
BufferedWriter xhBuffer = new BufferedWriter(xhWriter);
BufferedWriter xxhBuffer = new BufferedWriter(xxhWriter);
BufferedWriter xxxhBuffer = new BufferedWriter(xxxhWriter);
mBuffer.write("<resources>");
hBuffer.write("<resources>");
xhBuffer.write("<resources>");
xxhBuffer.write("<resources>");
xxxhBuffer.write("<resources>");
mBuffer.newLine();
hBuffer.newLine();
xhBuffer.newLine();
xxhBuffer.newLine();
xxxhBuffer.newLine();
StringBuilder ms;
StringBuilder hs;
StringBuilder xhs;
StringBuilder xxhs;
StringBuilder xxxhs;
for (int i = 1; i <= 1200; i++) {
ms = new StringBuilder();
hs = new StringBuilder();
xhs = new StringBuilder();
xxhs = new StringBuilder();
xxxhs = new StringBuilder();
ms.append("<dimen name=\"").append("px").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 1.00)).append("dp").append("</dimen>");
hs.append("<dimen name=\"").append("px").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 1.50)).append("dp").append("</dimen>");
xhs.append("<dimen name=\"").append("px").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 2.00)).append("dp").append("</dimen>");
xxhs.append("<dimen name=\"").append("px").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 3.00)).append("dp").append("</dimen>");
xxxhs.append("<dimen name=\"").append("px").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 4.00)).append("dp").append("</dimen>");
mBuffer.write(ms.toString());
hBuffer.write(hs.toString());
xhBuffer.write(xhs.toString());
xxhBuffer.write(xxhs.toString());
xxxhBuffer.write(xxxhs.toString());
mBuffer.newLine();
hBuffer.newLine();
xhBuffer.newLine();
xxhBuffer.newLine();
xxxhBuffer.newLine();
}
for (int i = 1; i <= 120; i++) {
ms = new StringBuilder();
hs = new StringBuilder();
xhs = new StringBuilder();
xxhs = new StringBuilder();
xxxhs = new StringBuilder();
ms.append("<dimen name=\"").append("sp").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 1.00)).append("sp").append("</dimen>");
hs.append("<dimen name=\"").append("sp").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 1.50)).append("sp").append("</dimen>");
xhs.append("<dimen name=\"").append("sp").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 2.00)).append("sp").append("</dimen>");
xxhs.append("<dimen name=\"").append("sp").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 3.00)).append("sp").append("</dimen>");
xxxhs.append("<dimen name=\"").append("sp").append(i).append("\">").append(String.format(Locale.CHINA, "%1$.2f", i / 4.00)).append("sp").append("</dimen>");
mBuffer.write(ms.toString());
hBuffer.write(hs.toString());
xhBuffer.write(xhs.toString());
xxhBuffer.write(xxhs.toString());
xxxhBuffer.write(xxxhs.toString());
mBuffer.newLine();
hBuffer.newLine();
xhBuffer.newLine();
xxhBuffer.newLine();
xxxhBuffer.newLine();
}
mBuffer.newLine();
hBuffer.newLine();
xhBuffer.newLine();
xxhBuffer.newLine();
xxxhBuffer.newLine();
mBuffer.write("</resources>");
hBuffer.write("</resources>");
xhBuffer.write("</resources>");
xxhBuffer.write("</resources>");
xxxhBuffer.write("</resources>");
mBuffer.flush();
hBuffer.flush();
xhBuffer.flush();
xxhBuffer.flush();
xxxhBuffer.flush();
mWriter.flush();
hWriter.flush();
xhWriter.flush();
xxhWriter.flush();
xxxhWriter.flush();
mBuffer.close();
hBuffer.close();
xhBuffer.close();
xxhBuffer.close();
xxxhBuffer.close();
mWriter.close();
hWriter.close();
xhWriter.close();
xxhWriter.close();
xxxhWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("createDimens: end");
}
}
可以直接使用eclipse来运行java文件,之后就可以在当前项目下生成对应的尺寸文件。
吐槽一下,AndroidStudio3.0上运行纯java文件,跑不起来,我不知道是什么原因,如果有哪位大神之后,希望能给一个解答,我截一个as3.0运行纯java文件,报的错误: