如果我将 minAPI 设置为 21,我是否需要 AppCompat?
If I set minAPI to 21, do I need AppCompat?
我决定将 Android 的最低 API 版本设置为 21,但这是否意味着不再使用 AppCompat 毫无意义?只使用普通 Material 设计/没有 AppCompat / 等?
不,您应该始终使用 AppCompat。这可确保您的应用在所有 API 级别上已经保持一致,并且您可以访问所有新的 API(例如使用仅在 API 中引入的 Colored buttons 23).
许多其他库,例如 Design Support Library 也需要使用 AppCompat。
一个需要用到appcompat-v7
的场景是如果你想要一个action bar,而你的minSdkVersion
在11以下,目前没有常用和维护的appcompat-v7
的替代方案。
否则,appcompat-v7
是可以考虑的,但不是必须的,使用它有一定的成本:
脆弱性增加,许多小部件被子类取代。您的布局可能需要 EditText
,但 AppCompatActivity
会默默地用 AppCompatEditText
替换它,后者扩展了 EditText
。在理想世界中,这不会造成任何问题。然而,设备制造商有扰乱标准小部件实现的历史。创建标准小部件的子类可能会绕过设备制造商引入的错误。我个人 运行 对此非常感兴趣,特别是 EditText
。
增加了应用程序大小。 appcompat-v7
使您的 APK 大小增加约 1MB。正如 Google 喜欢指出的那样,开发人员应该积极尝试减小他们的 APK 大小,因为一些用户必须按 MB 为带宽付费(因此下载 APK 是有成本的),并且一些设备在存储方面非常吝啬。
强制Material 设计美学。 Google 希望所有应用都使用 Material 设计,出于他们自己的政治原因。 Material 设计有拥护者也有反对者。并非所有设计师都想遵循 Material 设计。 appcompat-v7
可能会使实施非 Material 设计变得更加困难,具体取决于与 Google 规范的所需偏差。
预装应用程序的视觉二分法。 Android 4.x 设备的用户习惯于 Holo
主题,许多非 Google 预装应用程序将具有基于 Holo
的主题。对于碰巧使用 Google 应用程序的用户,他们已经接触过 Material 设计,现在可能已经习惯了。当然,Android 5.0+ 在 Android 设备生态系统中所占的比例正在不断增长。但是,与三星、LG、索尼、HTC 等将在其 Android 4.x 设备上安装的应用程序相比,Material Design 应用程序显得格格不入。目前尚不清楚 Material 设计是否在某种程度上如此出色,以至于值得这些设备上的用户产生差异。
这些问题中有任何一个是阻碍吗?不,所以,如果您想使用 appcompat-v7
,请直接使用。但是,请理解 appcompat-v7
是一种选择,应该有意识地做出选择。
我决定将 Android 的最低 API 版本设置为 21,但这是否意味着不再使用 AppCompat 毫无意义?只使用普通 Material 设计/没有 AppCompat / 等?
不,您应该始终使用 AppCompat。这可确保您的应用在所有 API 级别上已经保持一致,并且您可以访问所有新的 API(例如使用仅在 API 中引入的 Colored buttons 23).
许多其他库,例如 Design Support Library 也需要使用 AppCompat。
一个需要用到appcompat-v7
的场景是如果你想要一个action bar,而你的minSdkVersion
在11以下,目前没有常用和维护的appcompat-v7
的替代方案。
否则,appcompat-v7
是可以考虑的,但不是必须的,使用它有一定的成本:
脆弱性增加,许多小部件被子类取代。您的布局可能需要
EditText
,但AppCompatActivity
会默默地用AppCompatEditText
替换它,后者扩展了EditText
。在理想世界中,这不会造成任何问题。然而,设备制造商有扰乱标准小部件实现的历史。创建标准小部件的子类可能会绕过设备制造商引入的错误。我个人 运行 对此非常感兴趣,特别是EditText
。增加了应用程序大小。
appcompat-v7
使您的 APK 大小增加约 1MB。正如 Google 喜欢指出的那样,开发人员应该积极尝试减小他们的 APK 大小,因为一些用户必须按 MB 为带宽付费(因此下载 APK 是有成本的),并且一些设备在存储方面非常吝啬。强制Material 设计美学。 Google 希望所有应用都使用 Material 设计,出于他们自己的政治原因。 Material 设计有拥护者也有反对者。并非所有设计师都想遵循 Material 设计。
appcompat-v7
可能会使实施非 Material 设计变得更加困难,具体取决于与 Google 规范的所需偏差。预装应用程序的视觉二分法。 Android 4.x 设备的用户习惯于
Holo
主题,许多非 Google 预装应用程序将具有基于Holo
的主题。对于碰巧使用 Google 应用程序的用户,他们已经接触过 Material 设计,现在可能已经习惯了。当然,Android 5.0+ 在 Android 设备生态系统中所占的比例正在不断增长。但是,与三星、LG、索尼、HTC 等将在其 Android 4.x 设备上安装的应用程序相比,Material Design 应用程序显得格格不入。目前尚不清楚 Material 设计是否在某种程度上如此出色,以至于值得这些设备上的用户产生差异。
这些问题中有任何一个是阻碍吗?不,所以,如果您想使用 appcompat-v7
,请直接使用。但是,请理解 appcompat-v7
是一种选择,应该有意识地做出选择。