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

10

冰激凌三明治引入了许多新的UI设计元素,但市场渗透率仅约为4%。如果想要未来证明其应用程序并利用Honeycomb / Ice Cream Sandwich引入的一些设计元素(如操作栏、配色方案等),那么保持某种程度的向后兼容性的最佳方法是什么?

3个回答

10
虽然我同意@Ollie C的观点,但我认为除了使用Actionbar Sherlock库之外还有其他选择。在这样说的同时,我积极参与ABS社区,并同意它是非常有用的,并包含了您可能需要的所有UI资源。
您可以查看通过API级别向后优雅降级的UI组件。例如:
您可以在'styles.xml'文件中创建并设置样式,如下所示。
<?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.html如何使用Holo.Light主题,并在早期版本的设备上回退至“Light”?

此外,还有这个项目:https://github.com/ChristopheVersieux/HoloEverywhere,它试图引入holo主题。

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


对于 Material Design,我会添加:https://developer.android.com/training/material/theme.html。 - Yair Kukielka

3

这是一个非常广泛的主题。答案取决于您要使用哪个具体元素。

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

- 对于颜色方案/主题:如此SO线程所述,创建res/values/styles.xml和res/values-v11/styles.xml(例如,称为“myStyle”),为每个样式选择相关的父级。对于V11,它可能是“Theme.Holo”,而对于其他,则可能是“Theme.Dark”。添加任何您想要的自定义主题。在清单中引用该自定义主题,根据设备的平台版本选择正确的主题(values-v11文件夹将用于Honeycomb及以上版本,其他则用于Gingerbread及以下版本)

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


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接