重要概念
什么是屏幕尺寸、屏幕分辨率、屏幕像素密度?
什么是 dp、dip、dpi、sp、px?他们之间的关系是什么?
什么是 mdpi、hdpi、xdpi、xxdpi?如何计算和区分?
在下面的内容中我们将介绍这些概念。
屏幕尺寸
屏幕尺寸指屏幕的对角线的长度,单位是英寸,1 英寸=2.54 厘米
比如常见的屏幕尺寸有 2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0 等
屏幕分辨率
屏幕分辨率是指在横纵向上的像素点数,单位是 px,1px=1 个像素点。一般以纵向像素 横向像素,如 1960 1080。
屏幕像素密度
屏幕像素密度是指每英寸上的像素点数,单位是 dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。
dp、dip、dpi、sp、px
px 我们应该是比较熟悉的,前面的分辨率就是用的像素为单位,大多数情况下,比如 UI 设计、Android 原生 API 都会以 px 作为统一的计量单位,像是获取屏幕宽高等。
dip 和 dp 是一个意思,都是 Density Independent Pixels 的缩写,即密度无关像素,上面我们说过,dpi 是屏幕像素密度,假如一英寸里面有 160 个像素,这个屏幕的像素密度就是 160dpi,那么在这种情况下,dp 和 px 如何换算呢?在 Android 中,规定以 160dpi 为基准,1dip=1px,如果密度是 320dpi,则 1dip=2px,以此类推。
假如同样都是画一条 320px 的线,在 480 800 分辨率手机上显示为 2/3 屏幕宽度,在 320 480 的手机上则占满了全屏,如果使用 dp 为单位,在这两种分辨率下,160dp 都显示为屏幕一半的长度。这也是为什么在 Android 开发中,写布局的时候要尽量使用 dp 而不是 px 的原因。
而 sp,即 scale-independent pixels,与 dp 类似,但是可以根据文字大小首选项进行放缩,是设置字体大小的御用单位。
mdpi、hdpi、xdpi、xxdpi
其实之前还有个 ldpi,但是随着移动设备配置的不断升级,这个像素密度的设备已经很罕见了,所在现在适配时不需考虑。
mdpi、hdpi、xdpi、xxdpi 用来修饰 Android 中的 drawable 文件夹及 values 文件夹,用来区分不同像素密度下的图片和 dimen 值。
那么如何区分呢?Google 官方指定按照下列标准进行区分:
名称 | 像素密度范围 |
---|---|
mdpi | 120dpi~160dpi |
hdpi | 160dpi~240dpi |
xhdpi | 240dpi~320dpi |
xxhdpi | 320dpi~480dpi |
xxxhdpi | 480dpi~640dpi |
在进行开发的时候,我们需要把合适大小的图片放在合适的文件夹里面。下面以图标设计为例进行介绍。
在设计图标时,对于五种主流的像素密度(MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)应按照 2:3:4:6:8 的比例进行缩放。例如,一个启动图标的尺寸为 48x48 dp,这表示在 MDPI 的屏幕上其实际尺寸应为 48x48 px,在 HDPI 的屏幕上其实际大小是 MDPI 的 1.5 倍 (72x72 px),在 XDPI 的屏幕上其实际大小是 MDPI 的 2 倍 (96x96 px),依此类推。
虽然 Android 也支持低像素密度 (LDPI) 的屏幕,但无需为此费神,系统会自动将 HDPI 尺寸的图标缩小到 1/2 进行匹配。
下图为图标的各个屏幕密度的对应尺寸
屏幕密度 | 图标尺寸 |
---|---|
mdpi | 48x48px |
hdpi | 72x72px |
xhdpi | 96x96px |
xxhdpi | 144x144px |
xxxhdpi | 192x192px |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论