自動生成dimen
4413 ワード
package com.kang.makedimen;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class MakeDimen {
// //resoluton format: H*W
private static final String[][] RESOLUTION_ARRAYS = { { "640", "480" },
{ "854", "480" }, { "800", "480" }, { "800", "600" },
{ "960", "540" }, { "1280", "720" }, { "1920", "1080" } };
private static final String XML_BEGIN = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
<resources>";
private static final String XML_END = "</resources>";
// ///////////////////////////////////////////////////////
private static final String BASE_RESOLUTION[] = RESOLUTION_ARRAYS[0];// set
// baseline
// type
private static final boolean IS_NEED_HEIGHT = true;
private static final String OUTPUT_DIR = "D:\\Android_dimen_kangx\\";
// ///////////////////////////////////////////////////////
/**
* @param args
*/
public static void main(String[] args) {
createAllDimenFile();
}
private static void createAllDimenFile() {
for (int i = 0; i < RESOLUTION_ARRAYS.length; i++) {
String path = getDimenFilePath(RESOLUTION_ARRAYS[i]);
String fileContent = makeContent(RESOLUTION_ARRAYS[i]);
createFile(path, fileContent);
}
String path = getDefaultDimenFilePath();
String fileContent = makeContent(RESOLUTION_ARRAYS[0]);
createFile(path, fileContent);
}
private static void createFile(String path, String fileContent) {
File file = new File(path);
if (file.exists()) {
file.delete();
}
try {
file.getParentFile().mkdirs();
if (file.createNewFile()) {
FileWriter writer = new FileWriter(file);
writer.write(fileContent);
writer.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static String makeContent(String[] resolution) {
int maxHeigth = Integer.valueOf(resolution[0]).intValue();
int maxWidth = Integer.valueOf(resolution[1]).intValue();
int baseLineMaxHeigth = Integer.valueOf(BASE_RESOLUTION[0]).intValue();
int baseLineMaxWidth = Integer.valueOf(BASE_RESOLUTION[1]).intValue();
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(XML_BEGIN).append("
");
for (int i = 1; i < maxWidth + 1; i++) {
int width = maxWidth * i / baseLineMaxWidth;
String item = makeWItem(i, width);
stringBuffer.append(item).append("
");
}
if (IS_NEED_HEIGHT) {
for (int i = 1; i < maxHeigth + 1; i++) {
int height = maxHeigth * i / baseLineMaxHeigth;
String item = makeHItem(i, height);
stringBuffer.append(item).append("
");
}
}
stringBuffer.append(XML_END);
return stringBuffer.toString();
}
private static String makeWItem(int index, int px) {
return "<dimen name=\"W" + index + "px\">" + px + "px</dimen>";
}
private static String makeHItem(int index, int px) {
return "<dimen name=\"H" + index + "px\">" + px + "px</dimen>";
}
private static String getDimenFilePath(String[] resolution) {
String resolutionFloder = "values-" + resolution[0] + "x"
+ resolution[1] + "\\";
return OUTPUT_DIR + resolutionFloder + "dimen.xml";
}
private static String getDefaultDimenFilePath() {
String resolutionFloder = "values" + "\\";
return OUTPUT_DIR + resolutionFloder + "dimen.xml";
}
}