由于苹果对高分屏的优化良好,所以在 iOS 上,代码中的 1 px 所代表的实际像素数会根据不同设备动态调整,开发者不需要进行二次换算。
由于 Android 设备碎片化严重,Google 不得不建立了一个新的名叫「density-independent pixel(密度无关像素,缩写为
dp
)」的尺寸单位,以适应不同分辨率屏幕的尺寸换算。
rpx
。px
和 rpx
、dp
之间进行换算了。px
换算的基本概念是:选择一个分辨率作为基准,在基准分辨率中,一个像素点显示有多长,在其他屏幕上会显示同样长度。dp = px * (目标设备 dpi 分辨率 / 160)
。
rpx = px * (目标设备宽 px 值 / 750)
。目标设备的宽度如果是 375px,按照 750rpx 进行换算,则等于 1rpx = 0.5px
目标设备的宽度如果是 1125px,换算后 1rpx = 1.5px
px
值有可能会变化(横竖屏、分屏模式等等)。这时候,再以宽度为基准,就会出现元素显示不正确的问题。rpx
和 dp
进行互换呢?当然不能!dp
是以屏幕分辨率为基准的动态单位,而 rpx
是以长度为基准的动态单位。就像「米」和「平方厘米」不能互换一样,dp
和 rpx
两者也是不能直接进行互换的,除非微信官方将 rpx
设定为分辨率基准而非长度基准。rpx
动态单位,设计稿的尺寸单位也推荐使用 rpx
。直接以 iPhone 6 的屏幕尺寸(375×667)用作视觉稿尺寸,1 px = 0.5 rpx;
以 1 px = 1 rpx 的标准,将设计稿尺寸设定为 750×1334。