在Android上定位多个屏幕分辨率时使用的最佳做法

Mar*_*era 2 java xml layout android

在设计UI时,我们需要针对许多Android突变和各种屏幕分辨率.

上述两个问题都建议对不同的屏幕使用不同的布局代码.真的有必要吗?

建议

为不同的屏幕尺寸提供不同的布局

为不同的屏幕密度提供不同的位图drawable

但我仍然认为,我们可以支持多个屏幕而无需为每个屏幕分辨率创建独立布局.还是我错了?

我知道,我确实使用了9-patch用于可缩放的背景图像(或表单输入等)
,我确实使用dp(密度像素)来声明相对于屏幕密度的大小

但是下一个最佳做法是什么?

Dan*_*Lew 5

我认为最近这个问题的答案发生了变化,但我将重温历史解决方案.

Pre-Honeycomb,解决方案是创建一个动态布局,可以根据屏幕的大小调整自己(使用9-patches,dips,扩展/缩小的布局等).这意味着您的所有视图都不是"像素完美",但您可以调整到您遇到的不同宽高比.有时你会想出不同的横向和纵向布局,但除此之外不需要定制.

随着Honeycomb的发布,问题变得更加复杂.现在你的屏幕尺寸已经大大不同了,你的应用程序拉伸效果一点也不好看.你有从7"到10"的平板电脑 - 哪一个是"大"而不是"xlarge"?3.0和3.1是一个尴尬的时期,您必须检测API版本/屏幕大小并相应地配置您的应用程序(假设您的应用程序支持手机和平板电脑).

然而,3.2及以后的一切都发生了变化.现在,可以这样描述最佳实践:像网页设计师一样思考,而不是Android设计师.而不是考虑手机与平板电脑与横向与纵向布局,而不是考虑适用于特定屏幕尺寸的布局.

这个博客文章这些幻灯片详细介绍了这个思考过程,但我认为通过访问一些示例网页并查看其实际情况可以最好地证明这一点.尝试访问此页面(或此页面此页面)并更改浏览器的大小.请注意他们如何根据宽度动态更改布局 - 这也是您在Android中所需要的.

所以现在你有一个在屏幕宽度150dp和400dp之间工作的布局; 另一个在401dp和800dp之间工作; 第三个处理800dp和1000dp等等.这种思维方式最终不会因为你作为开发人员而做的工作比以前多得多 - 而不是定义手机布局,平板电脑布局(每个都有纵向/横向) layout),您只需定义一些使用不同宽度的布局.

现在我们处于一个尴尬的过渡阶段,因为大多数人没有支持这种做法的设备.所以"最佳实践"基本上都是以上所有.几年后,当每个人都有ICS及以后,我们都可以松一口气.

(如果你正在寻找具体的解决方案,我道歉;这个答案最终是相对理论而不是具体的答案,主要是因为我觉得这个问题很开放.如果你有一个特定的问题想要解决,我可以尝试解决其他问题.)