分辨率:手机屏幕的像素点数,一般描述成屏幕的“宽×高”,如1080×1920。
屏幕大小:手机对角线的物理尺寸,以英寸(inch)为单位,如5寸屏。
像素密度:对角线上每英寸的像素点数,以dpi(dots per inch)为单位。
如√(1080 ^2+1920^2)/5=2203/5 = 440dpi
√(1080 ^2+1920^2)/6=2203/6 = 367dpi
宽逻辑尺寸:手机屏幕宽度以dp为单位计量的值。
如 1080×1920的5寸手机,宽逻辑尺寸为:1080px/(440/160) = 392dp。720×1080的5寸手机,宽逻辑尺寸为:720px/(320/160)=360dp。
注:dp是一种与像素密度无关的单位,能够根据不同的屏幕像素密度获得不同的像素(px)数量。屏幕像素密度为160dpi时,dp与px等价,当像素密度为240dpi时,1dp 等价于1.5px,以此规则可将各像素密度下dp单位的值计算得到像素值。使用dp单位来定义控件的宽高,可以使布局能较好地适配不同像素密度的手机屏幕。
1.等级像素密度
系统定义了一些固定密度:120 160 240 320 480 640,以防止真实像素密度碎片化问题。
如上述计算的密度为440dpi,367dpi,都已超过320,则对应系统密度的480dpi。
dp与px计算对照(mdpi 1dp=1px):
ldpi:1dp=0.75px mdpi:1dp=1px hdpi:1dp=1.5px xhdpi:1dp=2px xxhdpi:1dp=3px xxxhdpi:1dp=4px
Android手机屏幕标准 对应图标尺寸标准 等级像素密度 比例
xxxhdpi 2160*3840 192*192 640 4
xxhdpi 1080*1920 144*144 480 3
xhdpi 720*1280 96*96 320 2
hdpi 480*800 72*72 240 1.5
mdpi 320*480 48*48 160 1
ldpi 240*320 36*36 120 0.75
2.宽逻辑尺寸(dp单位)
资源调用规则
layout-sw600dp sw即smallwidth,当屏幕的绝对宽度大于600dp时,屏幕就会自动调用layout-sw600dp文件夹里面的布局,同理也会自动调用values-sw600dp里的尺寸资源。
layout-w600dp w即width,当屏幕的相对宽度(如横屏时则以长边为宽度)大于600dp时,屏幕就会自动调用layout-w600dp文件夹里面的布局,同理也会自动调用values-w600dp里的尺寸资源。
屏幕宽计算
dp与px比例计算
通过实际的屏幕密度,参照160dpi时的1:1来计算dp与px的比率,如240dpi下ratio=240/160= 1.5px/dp。
屏幕宽计算
按照上述计算比例,将px单位的宽度换算为dp单位的宽度
如 1080*1920 的5寸屏 ,屏幕密度为440dpi,dp与px比例为440/160=2.75(px/dp) ,屏幕宽为1080px/2.75(px/dp) = 392dp
1080*1920 的8寸屏,屏幕密度为275dpi,屏幕宽为1080/(275/160) = 628dp。对应sw600dp。
1080*1920 的10寸屏,屏幕密度为220dpi,屏幕宽为1080/(220/160) = 785dp。对应sw720dp。