7

我想知道是否可以在 Android 应用程序中使用优雅降级方法。即,使用 API 15 的某些功能,但如果不支持,请改用 API 10。

具体来说,我在 Android 4 中有“滑动标签”,而在 Android 2.x 中缺少对这个功能的支持(因此使用普通标签),但这个问题相当笼统。

我想在支持它的设备上使用高级功能,但当它不受支持时,我想使用替代方法。我似乎无法在 Android 2 项目中使用 Android 4 库,而 Android 4 项目将无法在 Android 2 设备上启动,这是可以理解的。

有什么解决办法吗?或者,至少就目前而言,Android 2 上的“滑动标签”有什么解决方案吗?

4

3 回答 3

5

第 1 部分:为了能够为较新的 API 使用功能,请确保您的清单将您的 android:minSdkVersion 声明为最低版本(在您的情况下为 10),但将 android:targetSdkVersion 设置为您要使用的 API 的较新版本(15)。在您的代码中,您可以执行类似的操作

if ( Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH ) {
    // Use the new APIs
} else {
    // Use the old APIs
}

您必须添加一个注释来指示新的 API 用法。

第 2 部分:滑动选项卡 - 我使用了 Jake Wharton 的 ViewPagerIndicator 和 Android 支持库中的 ViewPager 功能来实现滑动选项卡。这很简单。ViewPagerIndicator页面上有更多信息

希望这可以帮助。

于 2012-10-25T16:44:26.017 回答
1

确保在仅适用于较新版本 API 的类或函数上方使用 @TargetApi 指令。例如

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
void foo() {

  /* function called only on ice cream sandwich (API level 14) and greater */

}
于 2013-04-29T12:07:06.830 回答
1

我知道你已经标记了你的答案,但这可能会对你有所帮助,它是一个名为 actionbar sherlock 的 android 库,它已将 4.x 功能反向移植到 2.x。包括 Fragments、pagers、tabs 和 3.0 中引入的 Actionbar

于 2013-04-29T12:20:34.933 回答