前言:Android的碎片化是Android开发必须面对的一个问题,各式各样的品牌机型,屏幕尺寸,系统版本,我们需要让用户得到一致的体验,这是开发者必须面对的问题。
1,屏幕适配相关的概念
屏幕尺寸:屏幕尺寸是指屏幕对角线的长度,单位是英寸,1 inch=2.54cm
屏幕分辨率:屏幕分辨率以手机屏幕长和宽的像素点个数来衡量。例如 1280X720,即1280个像素长,720个像素宽。
屏幕像素密度:即每英寸像素点个数,单位是dpi(dots per inch)。可以通过屏幕分辨率计算出屏幕对角线像素点的个数,然后除以屏幕尺寸计算得出,在Android中,我们把所有屏幕密度分组位六种通用密度。低,中,高,超高,超超高,超超超高。
ldpi(低)~120dpi
mdpi(中)~160dpi
hdpi(高)~240dpi
xhdpi(超高)~320dpi
xxhdpi(超超高)~480dpi
xxxhdpi(超超超高)~640dpi
密度无关像素:Density Independent Pixels,与屏幕像素密度无关的长度单位,用dp表示。因为与屏幕像素密度无关,所以在不同屏幕像素密度手机上,使用这种长度单位配置的某个控件的大小不应该带给用户变小或变大的感觉。在不同屏幕像素密度下,dp转换为px为:
160dpi 1dp=1px
240dpi 1dp=1.5px
320dpi 1dp=2px
480dpi 1dp=3px
640dpi 1dp=4px
如果使用px作为控件大小的单位,在低,中,高屏幕像素密度下的效果,随着屏幕像素密度变大,控件看起来越来越小。这是由于屏幕像素密度越大,也就是每英寸像素点个数变多,则1个像素在长或宽中占有距离的比值越小。由于控件大小是以像素为单位的,那么控件看起来就越小。
如果使用dp作为空间大小单位,在低,中,高屏幕像素密度下的效果,随着屏幕像素密度变大,控件大小看起来几乎没有变化。这是由于随着屏幕像素密度变大,虽然1个像素占有的距离变小,但控件的像素值也在变大。