为什么要适配
由于 Android 系统的开放性,任何用户、开发者、OEM 厂商、运营商都可以对 Android 进行定制,于是导致运行 Android 的设备多种多样,它们有着不同的屏幕尺寸和像素密度。尽管系统可以通过基本的缩放和调整大小功能使界面适应不同屏幕,但也应该做出进一步优化,以确保界面能够在各类屏幕上美观地呈现。
屏幕尺寸
屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米。常见的屏幕尺寸有 2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等。
屏幕分辨率
屏幕分辨率是指在横纵方向上的像素点数,单位是 px,1px = 1个像素点。一般以纵向像素*横向像素,例如 1960*1080。表示高度方向上有1980个像素点,宽度方向上有1080个像素点。Android 手机常见的分辨率:320x480, 480x800, 720x1280, 1080*1920。UI 设计师的设计图会以 px 作为统一的计量单位。
屏幕像素密度
屏幕像素密度是指每英寸上的像素点数,单位是 dpi,即“dot per inch" 的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。
安卓手机对于每类手机屏幕大小都有一个相应的屏幕像素密度:
密度类型 | 代表分辨率(px) | 屏幕像素密度(dpi) |
低密度(ldpi) | 240x320 | 120 |
中密度(mdpi) | 320x480 | 160 |
高密度(hdpi) | 480x800 | 240 |
超高密度(xhdpi) | 720x1280 | 320 |
超超高密度(xxhdpi) | 1080x1920 | 480 |
屏幕尺寸、分辨率、像素密度三者关系
一部手机的分辨率是 宽x高,屏幕大小是以寸为单位,那么三者的关系是:
密度无关像素
density-independent pixel,叫 dp 或 dip,与终端上的实际物理像素点无关。可以保证在不同屏幕像素密度的设备上显示相同的效果。Android 开发时用 dp 而不是 px 单位设置图片大小,是 Android 特有的单位。
应用场景:
假如同样都是画一条长度都是屏幕一半的线,如果使用 px 作为计量单位,那么在 480x480 分辨率手机上设置为 240px;在320x480 的手机上应设置为 160px,二者设置就不同了;如果使用 dp 为单位,在这两种分辨率下,160dp 都显示为屏幕一半的长度。
dp 与 px 的转换
px = dp * (dpi / 160)
独立比例像素
sp,即 scale-independent pixels,与 dp 类似,但是可以根据文字大小首选项进行缩放,是设置字体大小的御用单位。