不久前,遊戲開發商 Shiftjelly 的聯合創始人 Russel Ivanovic 在個人部落格發表了一篇文章,談論的是 Android 螢幕破碎化的問題。人們通常認為,Android 設備擁有上千種螢幕尺寸,為其開發app一定是很痛苦的事情。對此,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 開發app的時候,只考慮四種解析度。用一張圖片來表示:
在 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 開發者需要考慮4種解析度。
- 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,比避免手動佈局帶來的痛苦。不過,這也未必是壞事。一個可能的後果是,app的 iOS 版會比 Android 好。因為 iPhone 螢幕尺寸增大後會展現更多資訊,而不僅僅是介面的放大。
大概只有iPhone 6面世的那一天吧╮(╯_╰)╭
> 究竟幻想文什麼時候會結束呢
> 大概只有iPhone 6面世的那一天吧╮(╯_╰)╭
你的幻想恐怕到到iPhone 66面世都還不會結束吧╮(╯_╰)╭
?
android 不同的螢幕大小顯示的文字量也是不同的啊?
不過 android 的 layout mechanism 確實是早已支援了各種大小長寬的螢幕。