[Android]屏幕适配中PX、DPI、DP之间的关系

(个人笔记,如有错误,欢迎指正)

相关概念

DPI(Dots Per Inch)
  像素线密度,亦即屏幕上每英寸的长度中有多少像素。此参数由分辨率与屏幕尺寸共同决定,但是系统中预定义的dpi却不一定与实际的物理dpi完全相同。
DP(Device Independent Pixel)
  设备独立像素,一种虚拟的像素单位,本质上是物理长度,亦即160dpi的设备上一个像素的物理长度,大约是160微米。

屏幕适配问题

  在具体的编程开发中,我们所采用的各种长度都是以像素为单位的,而非实际的物理长度。
  但是,由于各种屏幕的像素密度不同,所以相同的像素长度,在不同的屏幕下,很有可能会有不同的物理长度。例如同样的160像素,在160dpi的屏幕上是2.54厘米,而在320dpi的屏幕上却是5.08厘米。
  因此,像素无法用来去表示绝对长度,我们就需要一种设备无关的单位去描述绝对长度,所以就采用实际的物理长度,也就是dp

换算关系

ldpimdpihdpixhdpixxhdpixxxhdpi
分辨率240x320320x480480x800720x12801080x19201440x2560
系统dpi120160240320480640
基准比例0.7511.5234
不同分辨率下dpi等级大小以及相关比例

  px作为屏幕与屏幕之间,在保持实际物理长度不变的情况下,进行像素长度转换的桥梁,所有的px都必须先转换为dp,才能进行后续的换算。

  • 例如一个 160 px × 160 px 大小的图片,其大小相当于 1 dp × 1 dp
  • 若显示到 xhdpi 下的屏幕,则将其乘以相应的 dpi 大小,变为 320 px × 320 px,对照上表,其缩放的比例刚好为 2 倍;
  • 若显示到 hdpi 下的屏幕,则将其乘以相应的 dpi 大小,变为 240 px × 240 px,对照商标,其缩放比例刚好为 1.5 倍。

图片适配问题

  在Android Studio的图片资源文件夹里,我们往往会发现有好几个文件夹存储着内容一模一样的图片文件,而文件夹名字的后缀一般就是上述的DPI等级,例如drawable-hdpi、drawable-mdpi 和 drawable-xhdpi 等等。
  如前所述,特定像素大小的图片,在不同DPI的屏幕上,往往会存在放缩的现象,如此则必然会造成图片质量的损失。因此,我们就需要为不同DPI的屏幕分别设计对应像素大小的图片,以保证图片的质量。
  除此之外,以下有一张附表,来自 http://petrnohejl.github.io/Android-Cheatsheet-For-Graphic-Designers/ 说明的是不同屏幕的像素密度与对应图标大小的关系:

QualifierDPIScaling factorLauncher iconAction bar, tab iconNotification icon (API 11)
ldpi1200.7536 x 3624 x 2418 x 18
mdpi1601.048 x 4832 x 3224 x 24
hdpi2401.572 x 7248 x 4836 x 36
xhdpi3202.096 x 9664 x 6448 x 48
xxhdpi4803.0144 x 14496 x 9672 x 72
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值