Android软件人员最担忧的Android分裂性问题之一当属显示屏的不同尺寸。因每一部手机分辨率不同,软件人员需要精确计算出设计图标、照片、视频游戏背景和对话框等的占用空间。但Google表示已经从根本上解决了这一曾困扰Palm软件人员的分辨率问题。
实际上,早在第一款Android手机上市前,Google就已经推出一套解决方案,不仅解决了不同的像素分辨率为题,还解决了像素密度问题,像素密度指的是每英寸像素数量。Android结构工程师黛安·哈克本(Diane Hackborn)在Google+中描述了公司理念:
我们解决显示屏分辨率问题的动机来源于Palm/PalmSource体验。Palm设备传统上采用160x160显示屏。最初,索尼推出320x320 显示屏,应用坐标只需扩大一倍即可,软件人员仍能够认为自己是在160x160的显示屏上操作,操作系统通过转换并利用高分辨率显示屏显示更清晰的文本和 绘图。
但后来该策略在遭遇QVGA [320x240]显示屏时出现问题。由于QVGA [320x240]显示屏用于大量设备,其生产成本较低。将书写区域放置在显示屏底部,仍能够获得应用所需的预期空间。但其密度在160x160和 320x320之间,缩放比例为1.5倍时,问题就出现了。
将目标尺寸缩放1.5倍,原来的实线将因实际显示屏分辨率不同而出现不同程度的暗淡斑点。为解决Android面临的显示屏尺寸和分辨率挑战,该操作系统采用密度独立像素(其缩写为dp或dip)方案。
Android针对显示屏分辨率提出的解决方案配合大量布局工具使用。Meridian Apps软件人员尼克·法伦纳(Nick Farina)在博客中称:“一旦软件人员掌握了布局工具,就能够在布局时对肖像/平面设备方向及不同显示屏尺寸进行自动调整。”
Android工程师罗曼·盖伊(Romain Guy)指出:“如果你在应用中标出的按钮为100像素的宽度,该按钮在640x480像素设备中看起来较320x480像素设备中要小得多。现在,如果 你对按钮的宽度标为100dip,该按钮尺寸在两款设备上看起来是一样的。”
从理论上看,Android解决方案适合任何像素密度。为方便起见,Google制定出一些主要计数单位:规定 1ldpi=120dpi,1mdpi=160 dpi,1hdpi=240 dpi,1xhdpi=320 dpi。为推动这一方案,Google力劝软件人员为不同DPI显示屏提供资源,确保其应用在任一款设备上看起来更漂亮。
这就需要编码员和图形设计人员做些先期工作。哈克本说,做好先期工作将保证软件能够很好地适应Galaxy Nexus及其316dpi、1280x720显示屏。
哈克本说:“目前Android及其应用在Galaxy Nexus上运行得相当好。”Android解决方案非常灵活。当然,Google从一开始就将Android定位为一款面向众多制造商的操作系统。苹果iPhone则情况迥异,苹果一直牢牢掌控着iPhone。
软件人员密切关注IOS的每一个像素。iPhone 4问世后,其显示屏分辨率由480x320增长至960x640。大量迹象表明苹果下一代iPad显示屏分辨率将由第一代iPad的1024x768分辨率增长至2048x1536。