1

我从 SDK 文档中引用:

“从 Android 3.0(API 级别 11)开始,Android 驱动的设备不再需要提供专用的菜单按钮。随着这一变化,Android 应用程序应该摆脱对传统 6 项菜单面板的依赖,而是提供一个操作栏来呈现常见的用户操作。”

进一步:“如果您正在为 Android 2.3 或更低版本进行开发,用户可以通过按下菜单按钮来显示选项菜单面板。在 Android 3.0 和更高版本上,选项菜单中的项目由操作栏显示为 on -屏幕操作项和溢出选项。从 Android 3.0 开始,不推荐使用菜单按钮(某些设备没有),因此您应该迁移到使用操作栏来提供对操作和其他选项的访问。

因此,如果我理解正确,在具有菜单按钮的 Android 3.0 或更高版本的设备上,已弃用的代码仍然有效,而在 Android 3.0 或更高版本且没有菜单按钮的设备上,已弃用的代码将不起作用。

出现5个问题:

  1. 这些兼容性问题可以通过Android兼容库处理吗?
  2. 如果是,如何?
  3. 如果没有,是否有人拥有 Android 3 及更高版本且没有菜单按钮的设备列表?
  4. 目前这些设备的市场份额有多高?
  5. 指定最大 SDK,将排除所有设备,无论它们是否有菜单按钮。有没有更好的方法来确保应用程序只安装在兼容的设备上?
4

4 回答 4

5

这些兼容性问题可以通过Android兼容库处理吗?如果是,如何?

将您的目标 API 设置为 11 或更高版本(建议您将其设置为最新的可用版本:因此,请将您的目标 API 设置为 15)。然后在您的应用程序中启用一个 ActionBar。过去通过菜单键显示的内容现在显示在 ActionBar 的溢出菜单中,或者如果您将每个人的“showIfRoom”设置为 true,则显示为栏本身上的单个操作。

如果没有,是否有人拥有 Android 3 及更高版本且没有菜单按钮的设备列表?

尝试编写特殊情况是错误的方法。在带有菜单按钮的设备上,它将与菜单按钮一起使用。在那些没有菜单按钮的地方,会有溢出菜单。Android 开发者博客上有一篇关于此的博文。

目前这些设备的市场份额有多高?

小而成长。

指定最大 SDK,将排除所有设备,无论它们是否有菜单按钮。有没有更好的方法来确保应用程序只安装在兼容的设备上?

是的:我描述的方法将处理这两种情况,并且它适用于所有设备:) 没有理由使用 maxSdk。

编辑:要解决评论中的问题:

那么,如果我的目标是 8,那么具有 11 的设备将无法正确处理菜单按钮?

如果您将目标设置为小于 11,则没有菜单键的设备将在其他软按钮旁边有一个“旧版”菜单按钮,如下所示: http ://android-developers.blogspot.com/2012/01/say -goodbye-to-menu-button.html

另一方面,如果我将 target 设置为 11,如果我使用 features > 8,eclipse 不会警告我?

如果您将目标设置为 11 并将最小设置为 8,那么如果您使用 9 个以上的功能,Eclipse 将不会警告您——您需要为此测试您的应用程序。简单的方法:将你的目标 SDK 暂时移回 8,看看编译器在哪里对你大喊大叫,确保这些代码路径永远不会在无法处理它们的设备上受到影响。

它对 Google Play Market 上的分发有什么影响?

只有好的。如果您设置 Max SDK,随着时间的推移,您的应用程序将与越来越少的设备兼容。最低版本为 8(而不是完全放弃向后兼容性)意味着您的应用程序可以安装在 Froyo 和 Gingerbread 设备上,而不仅仅是 Honeycomb 及更高版本。

于 2012-05-10T18:24:52.597 回答
2

这些兼容性问题可以通过Android兼容库处理吗?

不。

如果没有,是否有人拥有 Android 3 及更高版本且没有菜单按钮的设备列表?

几乎所有人。运行 Android 2.x 并升级到 Android 4.x 的设备将有一个专用的 MENU 按钮(例如,Nexus S)。为 Android 3.0+ 构建的新设备很少有专用的 MENU 按钮。

目前这些设备的市场份额有多高?

截至 5 月初, Android 3.0+ 占访问 Google Play 商店的设备的 8.2% 。它们中的大多数将是缺少 MENU 按钮的设备。

有没有更好的方法来确保应用程序只安装在兼容的设备上?

兼容性问题的唯一原因是您是否依赖 MENU 按钮来执行除显示选项菜单之外的操作。只需重写该代码以不再依赖 MENU 按钮,兼容性问题就会消失。

于 2012-05-10T18:21:03.127 回答
1

您已弃用的代码将在没有菜单按钮的设备上运行。如果您的目标 SDK 低于 3.0,没有菜单按钮的设备将在屏幕底部显示一个软件菜单按钮。

这在 Galaxy Nexus 和其他具有持久软件按钮的设备上看起来不错,但在 HTC One X 等通常没有软件按钮栏的设备上很难看。

于 2012-05-10T18:25:32.870 回答
0

他们在这里有一个在旧设备上使用操作栏的示例。还可以根据 android 版本配置不同的布局和活动/方法,因此您可以在旧设备上使用普通菜单,在支持它的设备上使用操作栏。(请参阅此处了解如何在运行时检查平台,以及使用基于平台的不同布局文件夹)

于 2012-05-10T18:26:26.637 回答