不久前,游戏开发商 Shiftjelly 的联合创始人 Russel Ivanovic 在个人博客发表了一篇文章,谈论的是 Android 屏幕碎片化的问题。人们通常认为,Android 设备拥有上千种屏幕尺寸,为其开发应用一定是很痛苦的事情。对此,Russel Ivanovic 给出了出人意料的结论。他说,事情并不是人们想象的那样困难。
一方面,Google 从一开始就提供了界面布局工具,允许开发者定义多种界面视图,适应不同尺寸的设备,另一方面,Android 屏幕分辨率早就开始标准化了,只是人们还没有意识到这一点。从公司的 Pocket Casts 应用收集的数据中,他找出了 10 款最受欢迎的手机,然后加上一款更高分辨率的 LG G3,其结果是这样的:
LG G3: 1440×2560
Nexus 5: 1080×1920
Galaxy S5: 1080×1920
Galaxy S4: 1080×1920
Galaxy S3: 720×1280
Galaxy Note 3: 1080×1920
Galaxy Note: 800×1280
HTC One M8: 1080×1920
HTC One M7: 1080×1920
Nexus 4: 768×1280
Moto X: 720×1280
表面看起来,这里的分辨率有很多种。但是,对于开发者来说,考虑布局的时候是以“1x”或“1dp”为基础的。例如,iPhone 3G 分辨率是 320×480,iPhone 4 是 640×960,不过,应用界面无需变化的。开发者不需要重新布置按钮,或者定制一个界面。Android 也是同样的情况。上面提到的设备分辨率变为 1x/1dp 形式的时候,是这样的:
LG G3 @ 1x: 360×640
Nexus 5 @ 1x: 360×640
Galaxy S5 @ 1x: 360×640
Galaxy S4 @ 1x: 360×640
Galaxy S3 @ 1x: 360×640
Galaxy Note 3 @ 1x: 360×640
Galaxy Note @ 1x: 400×640
HTC One M7 @ 1x: 360×640
HTC One M8 @ 1x: 360×640
Nexus 4 @ 1x: 384×640
Moto X @ 1x: 360×640
因此,开发者考虑界面布局的时候,没有太多的变体。除了宽度的变化之外,还有高度上的变化,因为在一些设备上,系统按键要占据一部分空间(Android 4.4 后,系统按键可以融入到界面之中了)。Shiftjelly 开发应用的时候,只考虑四种分辨率。一副图片来形象地表示:
在 Android 发展早期,屏幕尺寸更为多样。到了 Android 4.0 以后,情况已经有了很大改观了,而且,由于 Android 设备数量众多,即使开发者仅支持 4.0 以上的设备,用户数量也是相当可观的。
相比 Android 开发者来说,iOS 开发者一直是比较轻松,只是到了 iPhone 5 的时候,情况才发生了一些变化。但是,随着 iPhone 6 的到来,iOS 开发者也要面对屏幕碎片化问题了。专注苹果新闻的知名科技作者 John Gruber 最近发表了一篇长文,详细分析了 iPhone 6 可能的分辨率。他认为,4.7 英寸和 5.5 英寸的版本都可能存在,其分辨率是这样的:
4. 7 英寸: 1334 × 750, 326 PPI @2x
5. 5 英寸: 2208 × 1242, 461 PPI @3x
这样的话,iOS 开发者需要考虑四种分辨率。
320×480 @1x iPhone 4
320×536 @1x iPhone 5
375×667 @1x iPhone 6, 4.7″
414×736 @1x iPhone 6, 5.5″
Russel Ivanovic 用另一张图来形象表示:
这意味什么呢?Russel Ivanovic 说,如果支持不同屏幕尺寸,iOS 开发者要做的工作甚至要超过 Android 开发者。另外,要做好这件事情,最好的工具在 iOS 8 中,许多开发者可能会只支持 iOS8,比避免手动布局带来的痛苦。不过,这也未必是坏事。一个可能的后果是,应用的 iOS 版会比 Android 好。因为 iPhone 屏幕尺寸增大后会展现更多信息,而不仅仅是界面的放大。
图片来自 appleinsider