1.如果是才开始做项目,已经有设计图:720*1280

1).默认values文件夹:1dp=1px

values/dimens_x.xml:

name: x1~x720   value:1px~720px

<dimen name="x1">1.0px</dimen>

values/dimens_y.xml

name: y1~y1280   value:1px~1280px

<dimen name="y1">1.0px</dimen>

2).720*1280像素对应的values-w720dp文件: 1dp=2px

values-w720dp/dimens_x.xml:

name: x1~x720   value:2px~1440px

<dimen name="x1">2.0px</dimen>

values-w720dp/dimens_y.xml 

name: y1~y1280   value:2px~2560px

<dimen name="y1">2.0px</dimen>

2).1080*1920像素对应的values-w1080dp文件: 【以720*1280位基准数作倍数换算

values-w1080dp/dimens_x.xml:

name: x1~x720   value:3px~1080px     Width:1080  baseW:720

<dimen name="x1">3.0px</dimen> 倍数换算:倍数=Width/baseW=1080/720=1.5  value=1.5*2px=3.0px

values-w1080dp/dimens_y.xml:

name: y1~y1280   value:3px~3840px        Height:1920   baseH:1280

<dimen name="y1">3px</dimen> 倍数换算:倍数=Height/baseH=1920/1280=1.5  value=1.5*2px=3.0px

 备注:

1.倍数即屏幕像素密度:例子中用的是常用的手机像素密度,但市面上手机像素密度参差不齐,跟你测试的实际手机像素密度可能不一样,但一般用常用的像素密度来换算

2.若以dp为单位

1).values下的文件,如下:

values/dimens_x.xml

name: x1~x720   value:1.0dp~720.0dp

<dimen name="x1">1.0dp</dimen>

......

<dimen name="x720">720.0dp</dimen>

values/dimens_y.xml

name:y1~y1280  value:1dp~1280.0dp

<dimen name="y1">1dp</dimen>

......

<dimen name="y1280">1280.0dp</dimen>

2).values-w720dp下,如下:

values-w720dp/dimens_x.xml

name: x1~x720   value:0.5dp~360.0dp

<dimen name="x1">0.5dp</dimen>

......

<dimen name="x720">360.0dp</dimen>

values-720dp/dimens_y.xml

name:y1~y1280  value:0.5dp~640.0dp

<dimen name="y1">0.5dp</dimen>

......

<dimen name="y1280">640.0dp</dimen>

2.项目完成之后,则将values下面的dimens.xml 文件

按照不同分辩率的手机生成对应倍数的不同像素的dimens.xml文件

eg:以720*1280为例子

values/dimens.xml :1dp=1px

<dimen name="x1">1dp</dimen>

values-w720dp/dimens.xml : 【720*1280】 

<dimen name="x1">0.5dp</dimen> 倍数换算:  1dp=2px  720px=360dp    倍数=360/720=0.5

values-w1080dp/dimens.xml : 【1080*1920

<dimen name="x1">0.75dp</dimen> 倍数换算【以720作基准】:1080/720*0.5=0.75dp

附:自动生成dimens.xml的代码:

1.项目才开始,生成竖屏的代码

package com.charlie.volley.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter; /**
* 屏幕适配,自动生成dimens.xml
* @author Charlie
*
*/
public class GenerateValueFiles { private int baseW;
private int baseH; private String dirStr = "./res"; private final static String WTemplate = "<dimen name=\"x{0}\">{1}dp</dimen>\n";
private final static String HTemplate = "<dimen name=\"y{0}\">{1}dp</dimen>\n";
/**
* {0}-HEIGHT
*/
private final static String VALUE_TEMPLATE = "values-{0}x{1}";
private final static String VALUE_TEMPLATE1 = "values"; private static final String SUPPORT_DIMESION = "720,1280;1536,2048;1080,1920";
/**
* 单位为px:倍数与屏幕分辨率有关,2.0f对应屏幕像素为:720*1280,生成的文件对应放在values-w720dp下面
* 单位为dp:multiple=0.5f,对应屏幕像素为:720*1280,生成的文件对应放在values-w720dp下面
*/
private final static float multiple=0.5f; 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(); }
System.out.println(dir.getAbsoluteFile()); } /**
* @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(",");
if(Integer.parseInt(wh[0])==baseW){
float multiple=1.0f;
generateBaseXmlFile(Integer.parseInt(wh[0]), Integer.parseInt(wh[1]),multiple);
}
generateXmlFile(Integer.parseInt(wh[0]), Integer.parseInt(wh[1]));
}
} private void generateBaseXmlFile(int w, int h,float multiple) { StringBuffer sbForWidth = new StringBuffer();
sbForWidth.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
sbForWidth.append("<resources>\n");
float cellw = w * multiple / baseW; System.out.println("width : " + w + "," + baseW + "," + cellw);
for (int i = 1; i <= baseW; i++) {
sbForWidth.append("\t"+WTemplate.replace("{0}", i + "").replace("{1}",
change(cellw * i) + ""));
}
// sbForWidth.append("\t"+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>\n");
float cellh = h *multiple/ baseH;
System.out.println("height : "+ h + "," + baseH + "," + cellh);
for (int i = 1; i <= baseH; i++) {
sbForHeight.append("\t"+HTemplate.replace("{0}", i + "").replace("{1}",
change(cellh * i) + ""));
}
// sbForHeight.append("\t"+HTemplate.replace("{0}", baseH + "").replace("{1}",
// h + ""));
sbForHeight.append("</resources>"); File fileDir = new File(dirStr + File.separator
+ VALUE_TEMPLATE1);
fileDir.mkdir();
File layxFile = new File(fileDir.getAbsolutePath(), "ch_dimens_x.xml");
File layyFile = new File(fileDir.getAbsolutePath(), "ch_dimens_y.xml");
System.out.println(fileDir.toString());
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();
}
} private void generateXmlFile(int w, int h) { StringBuffer sbForWidth = new StringBuffer();
sbForWidth.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
sbForWidth.append("<resources>\n");
float cellw = w * multiple / baseW; System.out.println("width : " + w + "," + baseW + "," + cellw);
for (int i = 1; i <= baseW; i++) {
sbForWidth.append("\t"+WTemplate.replace("{0}", i + "").replace("{1}",
change(cellw * i) + ""));
}
// sbForWidth.append("\t"+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>\n");
float cellh = h *multiple/ baseH;
System.out.println("height : "+ h + "," + baseH + "," + cellh);
for (int i = 1; i <= baseH; i++) {
sbForHeight.append("\t"+HTemplate.replace("{0}", i + "").replace("{1}",
change(cellh * i) + ""));
}
// sbForHeight.append("\t"+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(), "ch_dimens_x.xml");
File layyFile = new File(fileDir.getAbsolutePath(), "ch_dimens_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 = 720;
int baseH = 1280;
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();
} }

2.项目才开始,生成横屏的代码

package com.charlie.volley.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter; /**
* 屏幕适配,自动生成dimens.xml
* @author Charlie
*
*/
public class GenerateValueFiles_land { private int baseW;
private int baseH; private String dirStr = "./res"; private final static String WTemplate = "<dimen name=\"x{0}\">{1}dp</dimen>\n";
private final static String HTemplate = "<dimen name=\"y{0}\">{1}dp</dimen>\n";
/**
* {0}-HEIGHT
*/
private final static String VALUE_TEMPLATE = "values-{0}x{1}";
private final static String VALUE_TEMPLATE1 = "values"; private static final String SUPPORT_DIMESION = "1280,720;2048,1536;";
/**
* 单位为px:倍数与屏幕分辨率有关,2.0f对应屏幕像素为:720*1280,生成的文件对应放在values-w720dp下面
* 单位为dp:multiple=0.5f,对应屏幕像素为:720*1280,生成的文件对应放在values-w720dp下面
*/
private final static float multiple=0.5f; private String supportStr = SUPPORT_DIMESION; public GenerateValueFiles_land(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(); }
System.out.println(dir.getAbsoluteFile()); } /**
* @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(",");
if(Integer.parseInt(wh[0])==baseW){
float multiple=1.0f;
generateBaseXmlFile(Integer.parseInt(wh[0]), Integer.parseInt(wh[1]),multiple);
}
generateXmlFile(Integer.parseInt(wh[0]), Integer.parseInt(wh[1]));
}
} private void generateBaseXmlFile(int w, int h,float multiple) { StringBuffer sbForWidth = new StringBuffer();
sbForWidth.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
sbForWidth.append("<resources>\n");
float cellw = w * multiple / baseW; System.out.println("width : " + w + "," + baseW + "," + cellw);
for (int i = 1; i <= baseW; i++) {
sbForWidth.append("\t"+WTemplate.replace("{0}", i + "").replace("{1}",
change(cellw * i) + ""));
}
// sbForWidth.append("\t"+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>\n");
float cellh = h *multiple/ baseH;
System.out.println("height : "+ h + "," + baseH + "," + cellh);
for (int i = 1; i <= baseH; i++) {
sbForHeight.append("\t"+HTemplate.replace("{0}", i + "").replace("{1}",
change(cellh * i) + ""));
}
// sbForHeight.append("\t"+HTemplate.replace("{0}", baseH + "").replace("{1}",
// h + ""));
sbForHeight.append("</resources>"); File fileDir = new File(dirStr + File.separator
+ VALUE_TEMPLATE1+"-land");
fileDir.mkdir();
File layxFile = new File(fileDir.getAbsolutePath(), "ch_dimens_x.xml");
File layyFile = new File(fileDir.getAbsolutePath(), "ch_dimens_y.xml");
System.out.println(fileDir.toString());
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();
}
} private void generateXmlFile(int w, int h) { StringBuffer sbForWidth = new StringBuffer();
sbForWidth.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
sbForWidth.append("<resources>\n");
float cellw = w * multiple / baseW; System.out.println("width : " + w + "," + baseW + "," + cellw);
for (int i = 1; i <= baseW; i++) {
sbForWidth.append("\t"+WTemplate.replace("{0}", i + "").replace("{1}",
change(cellw * i) + ""));
}
// sbForWidth.append("\t"+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>\n");
float cellh = h *multiple/ baseH;
System.out.println("height : "+ h + "," + baseH + "," + cellh);
for (int i = 1; i <= baseH; i++) {
sbForHeight.append("\t"+HTemplate.replace("{0}", i + "").replace("{1}",
change(cellh * i) + ""));
}
// sbForHeight.append("\t"+HTemplate.replace("{0}", baseH + "").replace("{1}",
// h + ""));
sbForHeight.append("</resources>"); File fileDir = new File(dirStr + File.separator
+ VALUE_TEMPLATE.replace("{0}", w + "")//
.replace("{1}", h + "")+"-land");
fileDir.mkdir();
File layxFile = new File(fileDir.getAbsolutePath(), "ch_dimens_x.xml");
File layyFile = new File(fileDir.getAbsolutePath(), "ch_dimens_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 = 1280;
int baseH = 720;
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_land(baseW, baseH, addition).generate();
} }

3.项目已完成,作屏幕适配,根据已有的dimens.xml生成对应不同分辨率文件夹下的dimens.xml文件

package com.charlie.volley.utils;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter; /**
* eclipse下使用
*
* 屏幕适配,自动生成dimens.xml
* @author Charlie
*
*
* 快速生成适配工具类
* 工具类代码,直接运行即可,(如果提示 Invalid layout of preloaded class 错误 项目设置如下即可 Project->Properties->Run/Debug Settings;
Select your Class(DimenTool.java) and click "Edit";
Open the tab "Classpath" and remove Android Lib from "Bootstrap Entries";
Apply everything and Run the class again.
*/
public class DimensUtils { public static void gen() {
//以此文件夹下的dimens.xml文件内容为初始值参照
File file = new File("./res/values/dimens.xml");
// File file = new File("./app/src/main/res/values/dimens.xml"); android studio BufferedReader reader = null;
StringBuilder sw240 = 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(tempString.lastIndexOf("<") - 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"); 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(""); 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("<!-- 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 = "./res/values-sw240dp/dimens.xml"; String sw480file = "./res/values-sw480dp/dimens.xml"; String sw600file = "./res/values-sw600dp/dimens.xml"; String sw720file = "./res/values-sw720dp/dimens.xml"; String sw800file = "./res/values-sw800dp/dimens.xml"; String w820file = "./res/values-w820dp/dimens.xml";
//将新的内容,写入到指定的文件中去
writeFile(sw240file, sw240.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);
File fileDir = new File((String) file.subSequence(0, file.length()-11));
fileDir.mkdir();
out= new PrintWriter(new FileOutputStream(new File(file)));
out.println(text);
out.close(); } catch (IOException e) { e.printStackTrace(); } out.close(); }
public static void main(String[] args) { gen(); } }

android 屏幕适配1 ——dimens.xml的适配的更多相关文章

  1. Android开发——自动生成Android屏幕适配的dimens.xml文件

    使用dimens.xml解决屏幕适配问题是Android官方解决方案,本文主要讲述了如何自动生成Android屏幕适配的dimens.xml,减少了工作量,在维护dimens.xml文件时更加省时省力 ...

  2. Android 屏幕,语言,API版本 适配和兼容性

    Supporting Different Languages http://developer.android.com/training/basics/supporting-devices/langu ...

  3. Android 屏幕适配方式

    适配:即当前应用在相同的手机上面显示相同的效果.适配前需要首先确定当前手机所属像素密度类型(如:xhdpi.hdpi.mdpi等) 像素密度:每英寸上分布的像素点个数,单位(dpi,ppi),利用勾股 ...

  4. Android 屏幕适配之dimens适配

    Android 屏幕适配之dimens适配     转  https://blog.csdn.net/github_2011/article/details/72636851 在过去多个项目中一直使用 ...

  5. Android屏幕适配笔记

    1.限定符 为了适配不同屏幕大小的android手机或android平板,有时候就需要利用限定符来为不同的屏幕设定不同的布局文件,在一般情况下我们都是在layout文件夹下为某个活动准备一个默认的布局 ...

  6. Android屏幕适配dp、px两套解决办法

    "又是屏幕适配,这类文章网上不是很多了吗?" 我也很遗憾,确实又是老问题.但本文重点对网上的各种方案做一个简短的总结,和具体使用方法. 若想了解具体Android设备适配的前世因果 ...

  7. Android屏幕适配的一些常识

    屏幕适配的注意事项 1. AndroidManifest.xml设置 在中Menifest中添加子元素 android:anyDensity="true"时,应用程序安装在不同密度 ...

  8. Android屏幕适配原理

    几个概念: 1) 屏幕密度(dpi) :dot per inch,即每英寸像素数. ldpi(120),mdpi(160),hdpi(240),xhdpi(320) 计算方法: 以480x854,4. ...

  9. Android屏幕适配常识

    屏幕适配的注意事项 1. AndroidManifest.xml设置 在中Menifest中添加子元素 android:anyDensity="true"时,应用程序安装在不同密度 ...

随机推荐

  1. Llinux-apache安装

    第四章  构建LAMP网站服务平台 实验报告 1.安装apache服务器软件及相关组件 查看系统中是否安装apache服务相关的软件包: [root@www /]# rpm -qa | grep ht ...

  2. 正则如何匹配div下的所有<li>标签?

    <?php header('Content-Type:text/html;charset=utf-8'); $str = '<div class="c1s"> & ...

  3. HTML&CSS基础学习笔记1.29-灵活地使用样式

    灵活的使用样式 使用样式的感觉很棒吧! 刚我们使用的内联样式是给具体的标签加上样式,如果有多个标签的时候,我们用内联样式给标签加样式的时候就需要一个个的加过来,这样就很麻烦. 而如果我们使用内部样式表 ...

  4. History Grading

    uva111:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24& ...

  5. SIM卡读卡器的研究与设计

    SIM卡(Subscriber Identity Module).即用户识别模块,是一张符合GSM规范的"智慧卡".SIM卡可以插入任何一部符合GSM规范的移动电话中," ...

  6. C51 库函数(2)

    3.2 STDIO.H:一般I/O函数 C51编译器包含字符I/O函数,它们通过处理器的串行接口操作,为支持其它I/O机制,只需修改getkey()和putchar()函数,其它所有I/O支持函数依赖 ...

  7. MapReduce执行过程源码分析(一)——Job任务的提交

    为了能使源码的执行过程与Hadoop权威指南(2.3版)中章节Shuffle and Sort的分析相对应,Hadoop的版本为0.20.2. 一般情况下我们通过Job(org.apache.hado ...

  8. git bash中避免在push时反复输入用户名和密码

    我用的是windows系统,这几天学着使用git时发现每次使用git push时每次都要输入一遍用户名和密码,感觉特烦,特意上网查了下,找到了简化方法.虽然不是原创,但至少算是加了点自己的心得和经验吧 ...

  9. hdu-1010 dfs+剪枝

    思路: 剪枝的思路参考博客:http://www.cnblogs.com/zibuyu/archive/2012/08/17/2644396.html  在其基础之上有所改进 题意可以给抽象成给出一个 ...

  10. puppet report import

    把Puppet报告导入Puppet Dashboard 现在Dashboard正在运行,而我们需要确保它能够获取Puppet报告.完成这项工作有几种方法,开始的时候都是用Rake任务导入旧报告.在/u ...