1.屏幕参数:
a.屏幕大小 - 如4.7寸屏幕 指的是手机对角线的长度(1寸 = 3.33cm)
b.分辨率 - 如 720 x 1280 就是屏幕分辨率 长和宽各有1280和720像素
c.PPI - Pixels Per Inch,DPI(Dots Per Inch),计算公式:PPI=√(长²+宽²)开方 ÷屏幕尺寸。 一般400PPI已经是非常高的屏幕密度了
2.android 系统定义的屏幕密度
密度 | ldpi | mdpi | hdpi | xhdpi | xxhdpi |
密度值 | 120 | 160 | 240 | 320 | 480 |
分辨率 | 240x320 | 320x480 | 480x800 | 720x1280 | 1080x1920 |

3.像素密度dp
当手机密度为mdpi时, 1dp = 1px
其它屏幕像素则可以通过比例得到 ldpi:mdpi:hdpi:xhdpi:xxhdpi = 3:4:6:8:12
4.单位转换的工具方法
java/utils/tools.java
package utils; import android.content.Context; /** * Created by Administrator on 2016/1/11. */ public class tools { /** * 将px值转换为dip或dp值,保证尺寸大小不变 * * @param pxValue * @param scale * (DisplayMetrics类中属性density) * @return */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 将dip或dp值转换为px值,保证尺寸大小不变 * * @param dipValue * @param scale * (DisplayMetrics类中属性density) * @return */ public static int dip2px(Context context, float dipValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); } /** * 将px值转换为sp值,保证文字大小不变 * * @param pxValue * @param fontScale * (DisplayMetrics类中属性scaledDensity) * @return */ public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } /** * 将sp值转换为px值,保证文字大小不变 * * @param spValue * @param fontScale * (DisplayMetrics类中属性scaledDensity) * @return */ public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } }