在android中为不同版本编程不同的布局

在android中为不同版本编程不同的布局,android,layout,version,screen-size,android-4.0-ice-cream-sandwich,Android,Layout,Version,Screen Size,Android 4.0 Ice Cream Sandwich,我必须为我的Android应用程序编程,使其具有最好的兼容性,以适应不同的屏幕大小(平板电脑和智能手机)以及版本2.3、3.2和4.0。 我知道可以将布局的文件夹命名为res/layout-sw600dp/。使布局与不同的屏幕大小完全匹配 因此,因为我将为平板电脑/智能手机使用完全不同的布局,我将从“加载屏幕”开始,该屏幕将测试使用的是哪个Android版本,如果使用了平板电脑或智能手机设备,例如在平板电脑的布局中,有些屏幕上会有智能手机上没有的按钮 因此,我将不得不将所有这些分包,如下所示:

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

因此,因为我将为平板电脑/智能手机使用完全不同的布局,我将从“加载屏幕”开始,该屏幕将测试使用的是哪个Android版本,如果使用了平板电脑或智能手机设备,例如在平板电脑的布局中,有些屏幕上会有智能手机上没有的按钮

因此,我将不得不将所有这些分包,如下所示:

  • 普通的
  • 2.3
    • 平板电脑
    • 智能手机
  • 3.2
    • 平板电脑
    • 智能手机
  • 4.0
    • 平板电脑
    • 智能手机
我会选择这种分离,因为在我看来,这是为即将到来的*更新做好准备的最好方式,如果说Android 4.0中的工具栏上应该添加一个按钮的话

在你看来,这种分离是一件好事还是一种完全的过载?


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

您可以通过查看Build.version找到Android版本

文档建议您对照Build.VERSION\u代码中的值检查Build.VERSION.SDK\u INT


基于该版本,您可以在if-else条件下设置布局,也可以命名资源文件夹以指示版本号(如
/res/layout-v11
)或(
/res/values-v13

关于你关于分离的问题,这取决于你的特殊要求。解决此问题的一种常见方法是回退机制:您提供了一些特定的布局(例如,xlarge横向v11布局),以及一些要回退的通用布局

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