【问题标题】:How to maintain backwards compatibility while utilising Android API Level 15?如何在使用 Android API Level 15 的同时保持向后兼容性?
【发布时间】:2012-04-10 18:38:52
【问题描述】:

冰淇淋三明治引入了很多新的 UI 设计元素,但市场渗透率仍然只有 4% 左右。如果有人想在未来证明他们的应用程序并利用蜂窝/冰淇淋三明治引入的一些设计元素,例如操作栏、配色方案等,那么确保您保持一点点倒退的最佳方法是什么兼容性?

【问题讨论】:

    标签: android user-interface actionbarsherlock


    【解决方案1】:

    虽然我同意@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 操作系统引用它们。虽然这不是您的问题,但它确实有助于提供一些一致性。

    【讨论】:

    【解决方案2】:

    这是一个非常非常广泛的话题。答案因您尝试使用的特定元素而异。

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

    -对于配色方案/主题:如this SO thread 中所述,为每个风格选择一个相关的父母。对于 V11,它可能是“Theme.Holo”,而对于另一个,可能是“Theme.Dark”。将您想要的任何自定义添加到主题。在清单中引用该自定义主题,将根据设备的平台版本选择正确的主题(values-v11 文件夹将用于 Honeycomb 及更高版本,另一个用于 Gingerbread 及以下)

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

    【讨论】:

      【解决方案3】:

      http://www.actionbarsherlock.com

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

      【讨论】:

        猜你喜欢
        • 2017-12-14
        • 2011-02-09
        • 1970-01-01
        • 1970-01-01
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-27
        相关资源
        最近更新 更多