Android手机屏幕的尺寸、分辨率多种多样,这为绘图造成了一定的难度,想要在不同的屏幕上保持绘图的准确性,需要对屏幕的信息有充分了解。
屏幕参数
通常Android手机屏幕有下面几个参数:
屏幕尺寸
指屏幕对角线的长度,通常使用“寸”表示,比如4.7寸手机。分辨率
指屏幕像素点的个数,例如720 x 1280分辨率手机表示:宽有个720个像素点,高有1280个像素点。ppi或dpi
指每英寸像素(Pixels Per Inch),又称dpi(Dots Per Inch),由对角线的像素点个数除以屏幕的尺寸得到。
Android系统屏幕密度
虽然Android手机有各种尺寸和分辨率,但是Android系统定义了几个标准的dpi值,在具体适配时,只需要对下面表格里的标准dpi进行适配即可。
屏幕类型 | ldpi | mdpi | hdpi | xhdpi | xxhdpi |
---|---|---|---|---|---|
密度值 | 120 | 160 | 240 | 320 | 480 |
分辨率 | 240x320 | 320x480 | 480x800 | 720x1280 | 1080x1920 |
独立像素密度dp
由于Android手机屏幕密度不同,因此,同样的像素点个数在不同屏幕上显示的长度也不同,因为高密度屏幕在同样的长度范围包含更多像素点。为了解决这个问题,Android系统使用dp(Device Independent Pixels,又称dip)表示屏幕长度,并规定在mdpi中,1dp = 1px,这样可以根据屏幕的密度值进行换算,得到每种屏幕密度对应的像素数目,例如,在xhdpi中,1dp = 320/160 * 1px = 2px。
单位转换
根据上面的分析,可以手动对像素单位进行转换,不过更好的方式是使用系统的TypedValue类,代码如下所示:
1 | /** |