如何使Android 4.0应用程序向后兼容?

Sha*_*fiq 17 android android-ui android-layout android-4.0-ice-cream-sandwich

Android 4.0(ICS)有很多新的UI指南,非常棒.问题是,未来,我不确定如何为Android 4.0构建应用程序,并确保该应用程序在运行Android 2.2和2.3的设备上看起来相同/相似.

Android兼容性库向后兼容的Action Bar,但我一直在寻找一种更具体的解决方案,用于将ICS后应用程序移植到ICS之前的手机上.

我是在正确的轨道上吗?有人有什么想法?

Tom*_*Tom 21

以下是一些建议.

首先,请注意新的Android设计指南.我相信这是一个好主意,不仅有利于显而易见的设计原因,而且还因为它会使向后兼容更容易.例如,支持包有助于将推荐的设计元素引入旧平台,此软件包的新版本可能会使其与最新的设计指南更加一致.


其次,使用片段.即使您认为现在对片段不太需要,它们也是Android设计的未来,大屏幕Androids的数量可能会很快增长.虽然它们增加了一些额外的复杂性,但我认为它们通过将视图与活动分开来鼓励良好的设计.

通过支持包(也称为兼容性库)启用片段使用.这很简单,我没有遇到任何问题.只需确保您的导入如下所示:

import android.**support.v4**.app.Fragment;
Run Code Online (Sandbox Code Playgroud)

这样你就可以从支持包中获取它们,而不是直接调用本机ICS API.


第三,使用文档中描述的主题启用ICS/HC操作栏.请注意,这不会为您的应用程序提供前Honeycomb平台上的操作栏.为此,您需要使用ActionBarSherlockActionBarCompat示例之类的东西.两者都是很好的解决方案,但它们增加了应用程序的复杂性.当前版本的支持包中没有操作栏,这显然是由于技术问题,但我怀疑他们正试图解决这些问题.

因此,如果您想要保持简单,请考虑您的应用在ICS和HC上设置操作栏并且在早期平台上没有操作栏是合理的.实际上,Android Dev博客在过去几天发布了一篇文章,专注于在这些情况下管理菜单和操作项.

此外,考虑稍后向您的应用程序添加一个前Honeycomb操作栏(例如,使用ActionBarCompat示例中的代码)将不会那么糟糕 - 在我看来,更容易,然后在以后重新编写代码片段.

最后,请注意您需要使用最新的SDK,以便您可以引用诸如holo主题(用于ICS操作栏)和showAsAction="ifRoom"元素之类的元素,因此您的清单将包含以下内容:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
Run Code Online (Sandbox Code Playgroud)