課程
/移動(dòng)開發(fā)
/Android
/Android-屏幕適配全攻略
求MakeXml源碼,萬分感謝
2016-04-11
源自:Android-屏幕適配全攻略 4-2
正在回答
package com.hd.yidan;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.PrintWriter;
/**?* Created by zhy on 15/5/3.?*/public class GenerateValueFiles {
??? private int baseW;??? private int baseH;
??? private String dirStr = "D:/res_shipei";
??? private final static String WTemplate = "<dimen name=\"x{0}\">{1}px</dimen>\n";??? private final static String HTemplate = "<dimen name=\"y{0}\">{1}px</dimen>\n";
??? /**???? * {0}-HEIGHT???? */??? private final static String VALUE_TEMPLATE = "values-{0}x{1}";
??? private static final String SUPPORT_DIMESION = "1080,1920";//??? ??? "320,480;"//??? ??+ "480,800;"//??? ??+ "480,854;"//??? ??+ "540,960;"//??? ??+ "720,1024;"//??? ??+ "720,1080;"//??? ??+ "720,1184;"//??? ??+ "720,1196;"//??? ??+ "720,1280;"//??? ??+ "800,1280;"//??? ??+ "1080,1812;"//??? ??+ "1080,1920;"//??? ??+ "1440,2560;";
??? private String supportStr = SUPPORT_DIMESION;
??? public GenerateValueFiles(int baseX, int baseY, String supportStr) {??????? this.baseW = baseX;??????? this.baseH = baseY;
??????? if (!this.supportStr.contains(baseX + "," + baseY)) {??????????? this.supportStr += baseX + "," + baseY + ";";??????? }
??????? this.supportStr += validateInput(supportStr);
??????? System.out.println(supportStr);
??????? File dir = new File(dirStr);??????? if (!dir.exists()) {??????????? dir.mkdir();
??????? }
??? }
??? /**???? * @param supportStr???? *??????????? w,h_...w,h;???? * @return???? */??? private String validateInput(String supportStr) {??????? StringBuffer sb = new StringBuffer();??????? String[] vals = supportStr.split("_");??????? int w = -1;??????? int h = -1;??????? String[] wh;??????? for (String val : vals) {??????????? try {??????????????? if (val == null || val.trim().length() == 0)??????????????????? continue;
??????????????? wh = val.split(",");??????????????? w = Integer.parseInt(wh[0]);??????????????? h = Integer.parseInt(wh[1]);??????????? } catch (Exception e) {??????????????? System.out.println("skip invalidate params : w,h = " + val);??????????????? continue;??????????? }??????????? sb.append(w + "," + h + ";");??????? }
??????? return sb.toString();??? }
??? public void generate() {??????? String[] vals = supportStr.split(";");??????? for (String val : vals) {??????????? String[] wh = val.split(",");??????????? generateXmlFile(Integer.parseInt(wh[0]), Integer.parseInt(wh[1]));??????? }
??? private void generateXmlFile(int w, int h) {
??????? StringBuffer sbForWidth = new StringBuffer();??????? sbForWidth.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");??????? sbForWidth.append("<resources>");??????? float cellw = w * 1.0f / baseW;
??????? System.out.println("width : " + w + "," + baseW + "," + cellw);??????? for (int i = 1; i < baseW; i++) {??????????? sbForWidth.append(WTemplate.replace("{0}", i + "").replace("{1}",??????????????????? change(cellw * i) + ""));??????? }??????? sbForWidth.append(WTemplate.replace("{0}", baseW + "").replace("{1}",??????????????? w + ""));??????? sbForWidth.append("</resources>");
??????? StringBuffer sbForHeight = new StringBuffer();??????? sbForHeight.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");??????? sbForHeight.append("<resources>");??????? float cellh = h *1.0f/ baseH;??????? System.out.println("height : "+ h + "," + baseH + "," + cellh);??????? for (int i = 1; i < baseH; i++) {??????????? sbForHeight.append(HTemplate.replace("{0}", i + "").replace("{1}",??????????????????? change(cellh * i) + ""));??????? }??????? sbForHeight.append(HTemplate.replace("{0}", baseH + "").replace("{1}",??????????????? h + ""));??????? sbForHeight.append("</resources>");
??????? File fileDir = new File(dirStr + File.separator??????????????? + VALUE_TEMPLATE.replace("{0}", h + "")//??????????????????????? .replace("{1}", w + ""));??????? fileDir.mkdir();
??????? File layxFile = new File(fileDir.getAbsolutePath(), "lay_x.xml");??????? File layyFile = new File(fileDir.getAbsolutePath(), "lay_y.xml");??????? try {??????????? PrintWriter pw = new PrintWriter(new FileOutputStream(layxFile));??????????? pw.print(sbForWidth.toString());??????????? pw.close();??????????? pw = new PrintWriter(new FileOutputStream(layyFile));??????????? pw.print(sbForHeight.toString());??????????? pw.close();??????? } catch (FileNotFoundException e) {??????????? e.printStackTrace();??????? }??? }
??? public static float change(float a) {??????? int temp = (int) (a * 100);??????? return temp / 100f;??? }
??? public static void main(String[] args) {??????? int baseW = 750;??????? int baseH = 1133;??????? String addition = "";??????? try {??????????? if (args.length >= 3) {??????????????? baseW = Integer.parseInt(args[0]);??????????????? baseH = Integer.parseInt(args[1]);??????????????? addition = args[2];??????????? } else if (args.length >= 2) {??????????????? baseW = Integer.parseInt(args[0]);??????????????? baseH = Integer.parseInt(args[1]);??????????? } else if (args.length >= 1) {??????????????? addition = args[0];??????????? }??????? } catch (NumberFormatException e) {
??????????? System.err.println("right input params : java -jar xxx.jar width height w,h_w,h_..._w,h;");??????????? e.printStackTrace();??????????? System.exit(-1);??????? }
??????? new GenerateValueFiles(baseW, baseH, addition).generate();??? }
}
qq_大蝦米_0 提問者
舉報(bào)
重點(diǎn)概念、常見問題及解決方案,趕快進(jìn)來學(xué)習(xí)解決疑惑
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-04-12
package com.hd.yidan;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
/**
?* Created by zhy on 15/5/3.
?*/
public class GenerateValueFiles {
??? private int baseW;
??? private int baseH;
??? private String dirStr = "D:/res_shipei";
??? private final static String WTemplate = "<dimen name=\"x{0}\">{1}px</dimen>\n";
??? private final static String HTemplate = "<dimen name=\"y{0}\">{1}px</dimen>\n";
??? /**
???? * {0}-HEIGHT
???? */
??? private final static String VALUE_TEMPLATE = "values-{0}x{1}";
??? private static final String SUPPORT_DIMESION = "1080,1920";
//??? ??? "320,480;"
//??? ??+ "480,800;"
//??? ??+ "480,854;"
//??? ??+ "540,960;"
//??? ??+ "720,1024;"
//??? ??+ "720,1080;"
//??? ??+ "720,1184;"
//??? ??+ "720,1196;"
//??? ??+ "720,1280;"
//??? ??+ "800,1280;"
//??? ??+ "1080,1812;"
//??? ??+ "1080,1920;"
//??? ??+ "1440,2560;";
??? private String supportStr = SUPPORT_DIMESION;
??? public GenerateValueFiles(int baseX, int baseY, String supportStr) {
??????? this.baseW = baseX;
??????? this.baseH = baseY;
??????? if (!this.supportStr.contains(baseX + "," + baseY)) {
??????????? this.supportStr += baseX + "," + baseY + ";";
??????? }
??????? this.supportStr += validateInput(supportStr);
??????? System.out.println(supportStr);
??????? File dir = new File(dirStr);
??????? if (!dir.exists()) {
??????????? dir.mkdir();
??????? }
??? }
??? /**
???? * @param supportStr
???? *??????????? w,h_...w,h;
???? * @return
???? */
??? private String validateInput(String supportStr) {
??????? StringBuffer sb = new StringBuffer();
??????? String[] vals = supportStr.split("_");
??????? int w = -1;
??????? int h = -1;
??????? String[] wh;
??????? for (String val : vals) {
??????????? try {
??????????????? if (val == null || val.trim().length() == 0)
??????????????????? continue;
??????????????? wh = val.split(",");
??????????????? w = Integer.parseInt(wh[0]);
??????????????? h = Integer.parseInt(wh[1]);
??????????? } catch (Exception e) {
??????????????? System.out.println("skip invalidate params : w,h = " + val);
??????????????? continue;
??????????? }
??????????? sb.append(w + "," + h + ";");
??????? }
??????? return sb.toString();
??? }
??? public void generate() {
??????? String[] vals = supportStr.split(";");
??????? for (String val : vals) {
??????????? String[] wh = val.split(",");
??????????? generateXmlFile(Integer.parseInt(wh[0]), Integer.parseInt(wh[1]));
??????? }
??? }
??? private void generateXmlFile(int w, int h) {
??????? StringBuffer sbForWidth = new StringBuffer();
??????? sbForWidth.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
??????? sbForWidth.append("<resources>");
??????? float cellw = w * 1.0f / baseW;
??????? System.out.println("width : " + w + "," + baseW + "," + cellw);
??????? for (int i = 1; i < baseW; i++) {
??????????? sbForWidth.append(WTemplate.replace("{0}", i + "").replace("{1}",
??????????????????? change(cellw * i) + ""));
??????? }
??????? sbForWidth.append(WTemplate.replace("{0}", baseW + "").replace("{1}",
??????????????? w + ""));
??????? sbForWidth.append("</resources>");
??????? StringBuffer sbForHeight = new StringBuffer();
??????? sbForHeight.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
??????? sbForHeight.append("<resources>");
??????? float cellh = h *1.0f/ baseH;
??????? System.out.println("height : "+ h + "," + baseH + "," + cellh);
??????? for (int i = 1; i < baseH; i++) {
??????????? sbForHeight.append(HTemplate.replace("{0}", i + "").replace("{1}",
??????????????????? change(cellh * i) + ""));
??????? }
??????? sbForHeight.append(HTemplate.replace("{0}", baseH + "").replace("{1}",
??????????????? h + ""));
??????? sbForHeight.append("</resources>");
??????? File fileDir = new File(dirStr + File.separator
??????????????? + VALUE_TEMPLATE.replace("{0}", h + "")//
??????????????????????? .replace("{1}", w + ""));
??????? fileDir.mkdir();
??????? File layxFile = new File(fileDir.getAbsolutePath(), "lay_x.xml");
??????? File layyFile = new File(fileDir.getAbsolutePath(), "lay_y.xml");
??????? try {
??????????? PrintWriter pw = new PrintWriter(new FileOutputStream(layxFile));
??????????? pw.print(sbForWidth.toString());
??????????? pw.close();
??????????? pw = new PrintWriter(new FileOutputStream(layyFile));
??????????? pw.print(sbForHeight.toString());
??????????? pw.close();
??????? } catch (FileNotFoundException e) {
??????????? e.printStackTrace();
??????? }
??? }
??? public static float change(float a) {
??????? int temp = (int) (a * 100);
??????? return temp / 100f;
??? }
??? public static void main(String[] args) {
??????? int baseW = 750;
??????? int baseH = 1133;
??????? String addition = "";
??????? try {
??????????? if (args.length >= 3) {
??????????????? baseW = Integer.parseInt(args[0]);
??????????????? baseH = Integer.parseInt(args[1]);
??????????????? addition = args[2];
??????????? } else if (args.length >= 2) {
??????????????? baseW = Integer.parseInt(args[0]);
??????????????? baseH = Integer.parseInt(args[1]);
??????????? } else if (args.length >= 1) {
??????????????? addition = args[0];
??????????? }
??????? } catch (NumberFormatException e) {
??????????? System.err.println("right input params : java -jar xxx.jar width height w,h_w,h_..._w,h;");
??????????? e.printStackTrace();
??????????? System.exit(-1);
??????? }
??????? new GenerateValueFiles(baseW, baseH, addition).generate();
??? }
}