所以我们已经看到了预览sdk以及ActionBar和Fragments等新的东西。制作大量的方法调用将不可避免地使用这些,所以有什么策略可以维护1个版本的应用程序,这将让我使用所有时髦的新东西,但也可以在2.3或更低版本的设备上工作?我的应用目标目标是1.5 - 2.3。
答案 0 :(得分:27)
相同的片段API现在可用作static library,用于旧版Android;它可以兼容Android 1.6。
您可以使用一些技巧来查看各种新API是否适用于您的应用。一般来说,您可能想要创建两个可选的活动集,一个使用花哨的新API(ActionBar,Animators等) - 另一个不使用。
以下代码显示了如何使用反射和异常捕获来确定Fragment API的可用性,以及如何确认其他Honeycomb API是否可用的版本检查。
private static boolean shinyNewAPIsSupported = android.os.Build.VERSION.SDK_INT > 10;
private static boolean fragmentsSupported = false;
private static void checkFragmentsSupported() throws NoClassDefFoundError {
fragmentsSupported = android.app.Fragment.class != null;
}
static {
try {
checkFragmentsSupported();
} catch (NoClassDefFoundError e) {
fragmentsSupported = false;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent startActivityIntent = null;
if (!shinyNewAPIsSupported)
startActivityIntent = new Intent(this, MainNonActionBarActivity.class);
else
startActivityIntent = new Intent(this, MainActionActivity.class);
startActivity(startActivityIntent);
finish();
}
一般来说,您可以使用相同的布局定义。如果片段可用,您将在不同的片段中对每个布局进行充气,在这些片段中,您可能不希望使用<include>
标签将其中的几个嵌入到更复杂的活动布局中。
有关如何编写代码以支持Honeycomb向后兼容性的更详细的工作,请访问:http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html
答案 1 :(得分:3)
方便的是,谷歌的Dianne Hackborne发布了a blog entry来涵盖这个确切话题。谷歌称他们将提供静态库,因此旧版本的Android也可以使用片段。
答案 2 :(得分:2)
你可能会发现Reto Meier的article on backwards-compatibility很有用,特别是“处理缺失的课程”这一部分。
我自己还没有看过Honeycomb SDK,但我和你一样,希望能够轻松,轻松地使用新功能而不会损害与旧设备的兼容性。
答案 3 :(得分:1)
谷歌刚刚宣布蜂窝网仅为平板电脑:http://www.pcmag.com/article2/0,2817,2379271,00.asp
因此,如果您的设备只适用于移动设备,则这可能不是问题。
答案 4 :(得分:1)
官方Android示例,可帮助您实现ActionBar from 1.6 to 4.x