px和dp(sp) 之间转化公式:前端
1 乘以(dp转px)或者除以(px转dp) scal缩放因子,在上浮0.5f
android
2 而因子是根据系统的屏幕密度density(每英寸多少显示点) /160 (默认加载mdpi的标准160ppi 1px(1倍的图))web
3 屏幕密度density:::markdown
4 还能够这样获取手机屏幕密度:::app
1 手机 2垂直边 分辨率 平方和 结果 开平方 获得 斜角线的长度iphone
2 除以 屏幕尺寸(好比 6寸),就是dpi密度ide
-----例如: (2160*2160+1080*1080) 开平方后 / 6寸 = 402(华为mete10 pro)post
5 scal因子 = displayMetrics实例 获取到densityDpi(120 160 240 320 480 640) /160 (mdpi的标准160ppi)):flex
6 Mdpi 160 是1倍 1px=1dp; hdip 240 是mdpi的 1.5倍 1dp=1.5px; xhdpi 320 是mdpi的2倍 ;spa
xxhdpi 480 是mdpi的3倍;xxxhdpi 640 是mdpi的4倍。。。
7 不能根据分辨率来适配,根据密度(dpi)对应的文件夹来适配;
放到对应的目录下,不然会出现小图高分辨上不清晰
( 高分辨率适配上 图片要大), 大图放低分辨率上被压缩的时候也会消耗内存。
8 对应表:
1 像素密度范围 xhdpi之下的递增80 ; 以上的都是递增 160 ;
2 通常都是16:9 (1280*720p 1920*1080p 2560*1440 2k);
全面屏幕 出现后,开始有了大概2:1 比例的分辨率, 宽都是1080高度不一样 (2280*1080 2246*1080 2160*1080)
像素密度等级 | 像素密度范围 | 分辨率(一般) | 像素密度与dp转换关系 |
---|---|---|---|
ldpi | —dpi-120dpi | 320*240 | 1dp = 0.75px |
mdpi | 120dpi-160dpi | 480*320 (Half-size VGA) | 1dp = 1px |
hdpi | 160dpi-240dpi | 800*480 (Wide VGA) | 1dp = 1.5px |
xhdpi | 240dpi-320dpi | 1280*720 | 1dp = 2px |
xxhdpi | 320dpi-480dpi | 1920*1080 | 1dp = 3px |
xxxhdpi | 480dpi-640dpi | 3840*2160 | 1dp = 4px |
其余:::
1 android 通常都是以iphone 750为比例来设计。。。通常用2x倍的切图, 由于android的720p和750相差不大。
2 Screen屏幕的高度,包括顶部状态栏 和 底部的操做栏。
3 Windows窗口的高度,只包括app可视区页面高度。
4 相似前端js也是同样: scrollHeight 整个页面的滚动高度;clientHeight 可视区高度.
附: sketch的标注标准