Android屏幕适配工具类Android自动生成不同分辨率的值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android屏幕适配⼯具类Android⾃动⽣成不同分辨率的值本⽂实例为⼤家分享了Android屏幕适配⼯具类的具体代码,供⼤家参考,具体内容如下
DimenTool
github
Android 屏幕适配⽅案,⾃动⽣成不同分辨率的值
android中官⽅建议的屏幕适配⽅式,通过根据不同的分辨率在⼯程的res⽂件夹下建⽴不同的尺⼨⽂件夹,每个⽂件夹下都建⽴dimens.xml⽂件。
然后根据不同的尺⼨在dimens.xml⽂件夹中分别计算配置不同的dp或者sp单位。
开发中发现,android屏幕适配需要⽤到很多的尺⼨,每个尺⼨都建⽴dimens.xml问价。
每个⽂件中的数值都要按照⽐例去计算,⼀个⼀个拿着计算器去计算吗?这样太⿇烦了。
今天有⼀个好的办法,来为⼤家介绍⼀下。
步骤
1.在⼯程的java⽂件夹下把项⽬的DimenTool.java复制到该⽂件夹下。
/**
* Created by cdy on 2016/2/3.
* 快速⽣成适配⼯具类 ,直接运⾏不成功需⼿动放⼊⽬录⽂件中
*/
public class DimenTool {
public static void gen() {
//以此⽂件夹下的dimens.xml⽂件内容为初始值参照
File file = new File("./app/src/main/res/values/dimens.xml");
BufferedReader reader = null;
StringBuilder sw240 = new StringBuilder();
StringBuilder sw320 = new StringBuilder();
StringBuilder sw360 = new StringBuilder();
StringBuilder sw480 = new StringBuilder();
StringBuilder sw600 = new StringBuilder();
StringBuilder sw720 = new StringBuilder();
StringBuilder sw800 = new StringBuilder();
StringBuilder w820 = new StringBuilder();
try {
System.out.println("⽣成不同分辨率:");
reader = new BufferedReader(new FileReader(file));
String tempString;
int line = 1;
// ⼀次读⼊⼀⾏,直到读⼊null为⽂件结束
while ((tempString = reader.readLine()) != null) {
if (tempString.contains("</dimen>")) {
//tempString = tempString.replaceAll(" ", "");
String start = tempString.substring(0, tempString.indexOf(">") + 1);
String end = tempString.substring(stIndexOf("<") - 2);
//截取<dimen></dimen>标签内的内容,从>右括号开始,到左括号减2,取得配置的数字
Double num = Double.parseDouble
(tempString.substring(tempString.indexOf(">") + 1,
tempString.indexOf("</dimen>") - 2));
//根据不同的尺⼨,计算新的值,拼接新的字符串,并且结尾处换⾏。
sw240.append(start).append( num * 0.75).append(end).append("\r\n");
sw320.append(start).append( num * 1).append(end).append("\r\n");
sw360.append(start).append( num * 1.125).append(end).append("\r\n");
sw480.append(start).append(num * 1.5).append(end).append("\r\n");
sw600.append(start).append(num * 1.87).append(end).append("\r\n");
sw720.append(start).append(num * 2.25).append(end).append("\r\n"); sw800.append(start).append(num * 2.5).append(end).append("\r\n"); w820.append(start).append(num * 2.56).append(end).append("\r\n"); } else {
sw240.append(tempString).append("");
sw320.append(tempString).append("");
sw360.append(tempString).append("");
sw480.append(tempString).append("");
sw600.append(tempString).append("");
sw720.append(tempString).append("");
sw800.append(tempString).append("");
w820.append(tempString).append("");
}
line++;
}
reader.close();
System.out.println("<!-- sw240 -->");
System.out.println(sw240);
System.out.println("<!-- sw320 -->");
System.out.println(sw320);
System.out.println("<!-- sw360 -->");
System.out.println(sw360);
System.out.println("<!-- sw480 -->");
System.out.println(sw480);
System.out.println("<!-- sw600 -->");
System.out.println(sw600);
System.out.println("<!-- sw720 -->");
System.out.println(sw720);
System.out.println("<!-- sw800 -->");
System.out.println(sw800);
String sw240file = "./app/src/main/res/values-sw240dp/dimens.xml"; String sw320file = "./app/src/main/res/values-sw320dp/dimens.xml"; String sw360file = "./app/src/main/res/values-sw360dp/dimens.xml"; String sw480file = "./app/src/main/res/values-sw480dp/dimens.xml"; String sw600file = "./app/src/main/res/values-sw600dp/dimens.xml"; String sw720file = "./app/src/main/res/values-sw720dp/dimens.xml"; String sw800file = "./app/src/main/res/values-sw800dp/dimens.xml"; String w820file = "./app/src/main/res/values-w820dp/dimens.xml";
//将新的内容,写⼊到指定的⽂件中去
writeFile(sw240file, sw240.toString());
writeFile(sw320file, sw320.toString());
writeFile(sw360file, sw360.toString());
writeFile(sw480file, sw480.toString());
writeFile(sw600file, sw600.toString());
writeFile(sw720file, sw720.toString());
writeFile(sw800file, sw800.toString());
writeFile(w820file, w820.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
/**
* 写⼊⽅法
*
*/
public static void writeFile(String file, String text) {
PrintWriter out = null;
try {
out = new PrintWriter(new BufferedWriter(new FileWriter(file)));
out.println(text);
} catch (IOException e) {
e.printStackTrace();
}
out.close();
}
public static void main(String[] args) {
gen();
}
}
2.编写dimens下的数值(0.5-360,可根据项⽬来定范围,主要为以后⽅便使⽤),可直接把项⽬dimens复制到你的项⽬中
3.创建⽂件夹(values-sw240dp,values-sw320dp values-sw360dp…根据dimentool代码创建对应的⽂件夹)
4.单击⿏标右键,执⾏Run.Dimentools.main,对应values⽂件夹下即可⽣成对⽤的dimens值
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。