移动开发中尺寸相关的概念梳理

2017-12-17  本文已影响0人  cheneyshan

背景

做移动App开发的同学,应该都被分辨率相关的概念或适配问题困扰过。甚至于设计人员,面对技术提到的dp,dip,sp等词汇时,也许也要懵上一会。在此,对开发中常用的一些概念做一个梳理。

基础概念

  1. 英寸(inch)

是英制的长度单位,1inch=2.54cm
我们通常用英寸来描述手机屏幕的尺寸。如iPhone6屏幕尺寸为4.7英寸,iPhone 6 Plus屏幕尺寸为5.5英寸,指的是显示屏对角线的长度。如下图:


iPhone部分屏幕尺寸示意
  1. 像素(Pixel)

百科上给的定义,指基本原色素及其灰度。可以理解为屏幕上的一个最小物理显示单位。无论代码里使用哪一种单位,最终都要转化为像素单位,并显示出来。

  1. 屏幕像素密度 ppi(Pixels Per Inch)

由它的名称可以看出,ppi指每英寸长度上含有的像素数目。只是这里的测量方式是沿着对角线的。

那ppi怎么算出来呢?其实就是很简单的一个勾股定理公式:


ppi 计算公式

举个例子,iPhone 5的分辨率是640px*1136px, 屏幕为4inch,代入上述公式可得到ppi=326。

  1. dpi(Dot Per Inch)

dpi指每英寸有多少个点。对手机、平板屏幕来说,dpi=ppi

iOS中的尺寸单位

pt 即point,是iOS里绘图时坐标系使用的抽象单位。我们应该把它和排版印刷中的point单位区别开来。

1 point = scale * pixel

(3GS的scale=1, iPhone4、5、6的scale=2, iPhone 6 Plus的scale = 3)

对于iPhone 6 Plus机型,逻辑分辨率选用了414pt * 736pt,按照scale=3来计算,完美1:1映射的设备物理分辨率应该是1242px * 2208px。但实际上手机的物理分辨率没有那么大(1080px * 1920px),个中缘由我们就不探讨了,对开发者来说,就按照@3x来准备素材,剩下的工作由渲染时自动压缩完成。具体可参考如下链接中的一张示意图 https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

Android中的尺寸单位

大家都知道Android生态圈内的设备碎片化比较严重,出现了各种分辨率的屏幕。如果按屏幕密度(即ppi)来划分,广义上可以分为四种大小:低(120ppi)、中(160ppi)、高(240ppi)和超高(320ppi)。

之前我们讲到,任何单位显示时都要转化为像素Pixel。那么dp和px的换算关系是怎样的呢?

px=dp*ppi/160

即在160ppi的屏幕上,1dp=1px;而320ppi的屏幕上,1dp=2px,可以理解为1dp的单位将以2个像素来渲染。

屏幕密度(ppi) dp px
mdpi(160ppi) 1 1
hdpi(240ppi) 1 1.5
xhdpi(320ppi) 1 2
xxhdpi(480ppi) 1 3

以上简单总结了iOS和Android实际开发中的尺寸单位的概念。有不正之处,欢迎指正。

上一篇 下一篇

猜你喜欢

热点阅读