1、概念了解
术语 |
阐明 |
补白 |
Screen size(屏幕尺度) |
指的是手机实践的物理尺度,比方常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 |
摩托罗拉milestone手机是3.7英寸 |
Aspect Ratio(宽高比率) |
指的是实践的物理尺度宽高比率,分为long和nolong |
Milestone是16:9,归于long |
Resolution(分辨率) |
和电脑的分辨率概念相同,指手机屏幕纵、横方向像素个数 |
Milestone是854*480 |
DPI(dot per inch) |
每英寸像素数,如120dpi,160dpi等,假定QVGA(320*240)分辨率的屏幕物理尺度是(2英寸*1.5英寸),dpi=160 |
能够反映屏幕的清晰度,用于缩放UI的 |
Density(密度) |
单位英寸中的像素数量,resolution/Screen size能够反映出手机密度 |
一般分为低、中、高密度 |
Density-independent pixel (dip)独立像素 |
指的是逻辑密度核算单位,dip和详细像素值的对应公式是dip/pixel=dpi值/160 |
页面布局的基本单位 |
2、屏幕单位差异
1)dip:设备独立像素,与屏幕密度有关
2)dp:和dip是相同的
3)px:pixels(像素),这是肯定像素,是多少就永久是多少不会改动
4)sp:scaled pixels(扩大像素). 首要用于字体显现best for textsize
定论:依据google的引荐,像素一致运用dip,字体一致运用sp
3、dip与px换算
px=dip*屏幕密度(屏幕密度用getDisplayMetrics().density取得)
public static int dip2px(Context context, float dipValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dipValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(pxValue / scale + 0.5f);
}