如何在使用Android API Level 15时保持向后兼容性?

时间:2012-04-10 18:38:52

标签: android user-interface actionbarsherlock

冰淇淋三明治引入了许多新的UI设计元素,但市场渗透率仍然只有4%左右。如果一个人想要面向未来的应用并利用蜂窝/冰淇淋三明治引入的一些设计元素,例如动作栏,配色方案等,那么确保你保持一些后退的最佳方法是什么兼容性?

3 个答案:

答案 0 :(得分:10)

虽然我同意@Ollie C,但我认为除了使用Actionbar Sherlock库之外还有其他选项可以添加,同时说这是我积极参与ABS社区并同意 fantasmagoricly 非常有用,包含可能需要的所有UI资产。

您可以通过API级别查看UI组件的优雅降级。例如:

您可以在values文件夹中创建并设置样式

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyAppTheme" parent="@android:style/Theme.Light.NoTitleBar">
        <!-- Any customizations for your app running on pre-3.0 devices here -->
    </style>
</resources> 

然后,对于Android 3.0+设备,请创建values-v11文件夹:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light">
        <!-- Any customizations for your app running on 3.0+ devices here -->
    </style>
</resources>

对于4.0+设备,请创建values-v14

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyAppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
        <!-- Any customizations for your app running on 4.0+ devices here -->
    </style>
</resources>

参考:http://android-developers.blogspot.co.uk/2012/01/holo-everywhere.htmlHow to use Holo.Light theme, and fall back to 'Light' on pre-honeycomb devices?

还有这个项目:https://github.com/ChristopheVersieux/HoloEverywhere它试图带来全息主题。

最后; Google鼓励开发人员在SDK中添加UI组件,以帮助解决向后兼容性问题,而不是直接从Android操作系统引用它们。虽然这不是您的问题,但它确实有助于提供一致性。

答案 1 :(得分:3)

这是一个非常非常广泛的话题。答案取决于您尝试使用的具体元素。

- 对于ActionBar:如果你想在早期版本中使用ActionBar,ActionBarSherlock是一个从Android支持库扩展的流行的免费库。

- 对于配色方案/主题:如this SO thread中所述,创建res / values / styles.xml和res / values-v11 / styles.xml,(例如,称为“myStyle”),每种风格选择一个相关的父母。对于V11,它可能是“Theme.Holo”,对于另一个,可能是“Theme.Dark”。将所需的任何自定义添加到主题中。在清单中引用自定义主题,并根据设备的平台版本选择正确的主题(value-v11文件夹将用于Honeycomb及以上,另一个用于Gingerbread及以下)

- 对于其他平台功能,您可以将特定于平台的功能封装在单独的类中,并根据Build.VERSION.SDK的值访问它们,如android developer blog所述。

答案 2 :(得分:1)

http://www.actionbarsherlock.com

这个(免费)库非常出色,可以提供您之前在Android版本上寻找的内容。