9

我必须对我的 Android 应用程序进行编程,使其与不同的屏幕尺寸(平板电脑和智能手机)以及2.3、3.2 和 4.0 版本具有最佳兼容性。 我知道将布局的文件夹命名为 res/layout-sw600dp/ 的可能性。使布局与不同的屏幕尺寸完全匹配。

因此,由于我将为平板电脑/智能手机使用完全不同的布局,我将从“加载屏幕”开始,它测试使用的是哪个 Android 版本以及是否使用了平板电脑或智能手机设备,例如在对于平板电脑的布局,某些屏幕上会出现智能手机上没有的按钮。

所以我将不得不将所有这些都放在包中,如下所示:

  • 常见的
  • 2.3
    • 药片
    • 手机
  • 3.2
    • 药片
    • 手机
  • 4.0
    • 药片
    • 手机

我会选择这种分离,因为在我看来,这是为即将到来的*更新*做好准备的最佳方式,如果假设应该在 Android 4.0 的工具栏中添加一个按钮。

在您看来,这种分离是好事还是完全超载?

我应该注意 4.0 中的其他新功能吗?

4

2 回答 2

17

您还可以命名资源文件夹以指示版本号(如/res/layout-v11)或(/res/values-v13

关于您关于分离的问题 - 这实际上取决于您的特定要求。解决此问题的常用方法是回退机制:您提供一些特定布局(例如,xlarge Landscape v11 布局)和一些通用布局以供回退。

当然,这是一个“理想主义”的解决方案;它并不总是这样工作。换句话说,仅仅通过提供替代资源来实际实现一个与这么多版本的Android兼容的应用程序是非常困难的。即使您使用兼容性库(这有助于减少特定于版本的代码);您仍然需要在运行时根据版本调整您的代码。

于 2012-01-18T12:20:20.260 回答
6

您可以通过 Build.VERSION 找到 Android 版本。

文档建议您对照 Build.VERSION_CODES 中的值检查 Build.VERSION.SDK_INT。

并且基于该版本,您可以在 if else 条件下设置布局

于 2012-01-18T10:31:03.690 回答