所以我们已经看到预览SDK和像ActionBar和Fragments这样整洁的新东西。做很多方法调用将不可避免地使用这些,所以有什么策略来维护1版本的应用程序,这会让我使用所有时髦的新东西,但也可以在运行2.3或更低版本的设备上工作?我的应用程序目前的目标是1.5 - 2.3。针对蜂窝和向后兼容的策略
回答
现在可以使用相同的片段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>
标签将其中几个嵌入到更复杂的活动布局中。通过对如何编写代码来支持蜂窝向后兼容性
更详细的工作可以在这里找到:http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html
您可能会发现Reto Meier的article on backwards-compatibility有用,特别是“处理失踪班”一节。
我还没有亲自看过Honeycomb SDK,但我和你一样,希望能够在不损害与旧设备的兼容性的情况下使用新功能非常简单和无忧。
方便地,Google的Dianne Hackborne已发布a blog entry涵盖此确切主题。谷歌表示他们将提供静态库,因此老版本的Android也将能够使用片段。
那么谷歌刚刚宣布蜂窝将只有平板电脑:http://www.pcmag.com/article2/0,2817,2379271,00.asp
所以如果你的设备是为移动只有这甚至可能不是一个问题。
官方Android样本,这将帮助你实现ActionBar from 1.6 to 4.x
- 1. 片段与兼容包和>蜂窝
- 2. 使蜂窝ActionBar与ICS兼容
- 3. Android蜂窝和imeOptions
- 4. 对象/ XML向后兼容
- 5. 安卓动作栏兼容性替代xml预蜂窝
- 6. Android:2.1应用程序布局兼容性蜂窝3.2
- 7. 什么是Kotlin的兼容性策略?
- 8. SlidingMenu和ViewPager与API13(蜂窝)
- 9. 蜂窝和游标(沮丧)
- 10. state_activated预蜂窝
- 11. Android:WebView ActionBar(蜂窝)?
- 12. 在蜂窝
- 13. 蜂窝边界
- 14. 对Caches目录的向后兼容性
- 15. Office.Interop向后兼容?
- 16. 向后兼容Android
- 17. 向后兼容BackupAgent
- 18. ios5向后兼容
- 19. MSVCRT向后兼容?
- 20. 向后兼容setOnDateSetListener
- 21. Android WebView 302重定向 - 蜂窝
- 22. ISerializable的和向后兼容性
- 23. 蜂窝系统栏
- 24. 设置在蜂窝
- 25. Laravel向后兼容的URL
- 26. 向后兼容的onBackPressed
- 27. C#的向后兼容性
- 28. PHP的password_hash()向后兼容?
- 29. 蜂窝向下箭头不像后退按钮
- 30. 针对BrowseNodeLookup的亚马逊IAM策略
还检查了这个职位,这给出了更多使用多个平台版本的示例:http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html – adamp 2011-01-28 20:06:17
我读过他们两个,但它看起来像蜂窝将更多地参与,尤其是像碎片和ActionBar的东西。你认为使用这些技术就足够了吗? – 2011-02-01 21:23:12