【问题标题】:Strategies for Honeycomb & backward compatibility蜂窝和向后兼容性的策略
【发布时间】:2023-03-16 09:08:02
【问题描述】:

所以我们已经看到了预览版 sdk 以及 ActionBar 和 Fragments 等简洁的新东西。使用这些将不可避免地进行大量方法调用,那么有什么策略可以维护应用程序的 1 个版本,这将让我使用所有时髦的新东西,但也可以在运行 2.3 或更低版本的设备上工作?我的应用程序目前的目标是 1.5 - 2.3。

【问题讨论】:

    标签: android backwards-compatibility android-3.0-honeycomb


    【解决方案1】:

    相同的片段 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();
      }
    

    一般来说,您可以使用相同的布局定义。在 Fragment 可用的情况下,您将在不同的 Fragment 中扩展每个布局,在不可用的情况下,您可能希望使用 <include> 标签将其中的几个嵌入到更复杂的 Activity 布局中。

    关于如何编写代码以支持 Honeycomb 的向后兼容性的更详细的工作可以在这里找到:http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html

    【讨论】:

    • 另外,如果您需要的唯一附加 API 是操作栏,请查看我编写的库,它是兼容性库的扩展,仅添加了该库。它为操作栏提供了一个 API,也允许使用单个主题。你可以在actionbarsherlock.com找到更多信息。
    【解决方案2】:

    方便的是,Google 的 Dianne Hackborne 已发布 a blog entry 涵盖了这个确切的主题。 Google 表示他们将提供静态库,以便旧版本的 Android 也可以使用片段。

    【讨论】:

      【解决方案3】:

      您可能会发现 Reto Meier 的 article on backwards-compatibility 很有用,特别是标题为“处理缺失的课程”的部分。

      我自己还没有看过 Honeycomb SDK,但我和你一样,希望在不损害与旧设备兼容性的情况下使用新功能非常容易且轻松。

      【讨论】:

      • 还可以查看这篇文章,其中提供了使用多个平台版本的更多示例:android-developers.blogspot.com/2010/07/…
      • 我都读过它们,但看起来 Honeycomb 会更多地参与其中,尤其是像 Fragments 和 ActionBar 这样的东西。您认为使用这些技术就足够了吗?
      【解决方案4】:

      谷歌刚刚宣布蜂窝将仅用于平板电脑:http://www.pcmag.com/article2/0,2817,2379271,00.asp

      因此,如果您的设备仅用于移动设备,这甚至可能不是问题。

      【讨论】:

        【解决方案5】:

        官方安卓示例,帮你实现ActionBar from 1.6 to 4.x

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 2011-02-06
          • 2016-08-31
          • 1970-01-01
          • 1970-01-01
          • 2014-06-26
          • 2020-03-09
          相关资源
          最近更新 更多