android屏幕适配,生成不同分辨率的dimen.xml文件
1.在项目下新建moudle,选择Java Library,如图:
2.编写工具类:
public class DimenUtils { //文件保存的路径 是在该项目下根路径下创建 比如该项目创建的路径是C:\MyProject\, // 则保存的文件路径是C:\MyProject\DimensDemo\app\src\main\res\values-360x640\dimens.xml //sdk 3.2 之后可使用 values-sw600dp\命名文件夹 private final static String rootPath = "app/src/main/res/values-{0}x{1}"; private final static float dw = 360f;//默认布局的宽 private final static float dh = 640f;//默认布局的高 private final static String WTemplate = "<dimen name=\"dp_{0}\">{1}px</dimen>\n"; // private final static String HTemplate = "<dimen name=\"dp_{0}\">{1}px</dimen>\n"; public static void main(String[] args) { // makeString(1080, 720); // makeString(1920, 1080); // makeString(1366, 768); //平板 makeString(1200, 1920); makeString(1536, 2048); makeString(1600, 2560); } //获取dimen.xml的文本内容 public static void makeString(int w,int h){ StringBuffer sb=new StringBuffer(); sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); sb.append("<resources>"); //遍历获取一系列宽的值 float cellw =w / dw;//宽的比例 for (int i = 0; i <dw ; i++) { sb.append(WTemplate.replace("{0}",i + "").replace("{1}", change(cellw * i) + "")); } sb.append(WTemplate.replace("{0}",dw+"").replace("{1}", w + "")); //遍历获取一系列高的值 float cellh=h/dh;//高的比例 // for (int i = 0; i <dh ; i++) { // sb.append(HTemplate.replace("{0}",i + "").replace("{1}", // change(cellh * i) + "")); // } // // sb.append(HTemplate.replace("{0}",dh+"").replace("{1}", h+ "")); sb.append("</resources>"); makeFile(w,h,sb.toString()); } //创建文件并写入内容 private static void makeFile(int w,int h,String text){ String path = rootPath.replace("{0}",w+ "").replace("{1}",h+ ""); File rootFile = new File(path); if (!rootFile.exists()) { rootFile.mkdirs(); } File file=new File(path,"dimen.xml"); try { PrintWriter pw=new PrintWriter(new FileOutputStream(file)); pw.println(text); pw.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } public static float change(float a) { int temp = (int) (a * 100); return temp / 100f; } }
3.右键运行该文件,即可生成对应的dimens文件: