Android
单位
px(pixels):(像素) 屏幕上可见像素点
dip/dp(Density independent pixels): 设备无关像素的长度单位。
sp(放大像素):scaled pixels,字体显示 best for text size (字体大小设置而变化)
dpi:(dots per inch )一英寸多少个像素点。常见取值 120,160,240。像素密度
density:密度。常见取值 1.5 , 1.0 。和标准dpi的比例(160px/inc)
in (英寸):长度单位
mm(毫米):长度单位
pt:point(磅)一个标准的长度单位,1pt = 1/72英寸
适配
- TypedValue
- applyDimension
public static float applyDimension(int unit, float value,
DisplayMetrics metrics)
{
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
}
-
计算
5.2英寸,分辨率为1080×1920屏幕尺寸->屏幕对角线长度,多以英寸为单位->5.2 in 物理宽度->1080/√ ̄(1080×1080+1920×1920)=w/5.2->1080/√ ̄(1080×1080+1920×1920) * 5.2=2.55 dpi = 对角线像素点数(根据分辨率通过勾股定理获取)/屏幕尺寸 像素密度dpi->√ ̄(1080×1080+1920×1920)/5.2=423.635->420dpi or 1080/2.55=423.529->420dpi (px/in) 密度density->dpi/160=2.625->0.75 1 2 3 sp->sp*dpi/160=px->sp*density=px->
网友评论