【问题标题】:If I set minAPI to 21, do I need AppCompat?如果我将 minAPI 设置为 21,我需要 AppCompat 吗?
【发布时间】:2016-12-14 21:22:20
【问题描述】:

我决定为 Android 设置最低 API 版本 21,但这是否意味着不再使用 AppCompat?只使用普通的 Material Design / 没有 AppCompat / 等等?

【问题讨论】:

  • 你说从 API 21 到 24 没有任何变化(事情确实发生了变化)。
  • 我知道发生了一些变化。这跟什么有什么关系?

标签: android android-appcompat android-api-levels


【解决方案1】:

不,您应该始终使用 AppCompat。这可确保您的应用已在所有 API 级别保持一致,并且您可以访问所有新 API(例如使用仅在 API 23 中引入的Colored buttons)。

许多其他库,例如 Design Support Library 也需要使用 AppCompat。

【讨论】:

  • 什么情况下不使用AppCompat?
  • 如果您正在构建的系统应用程序未在 Play 商店中发布(向后兼容性/跨设备一致性无关紧要)或 Unity 中的游戏等。根本不使用 Android 框架视图。
  • 在我的所有活动中扩展AppCompatActivity 是否足够?或者我应该使用AppCompatActivity 和所有AppCompat 视图吗?
  • @Micro - 如果您使用 AppCompatActivity,则常规视图在运行时将替换为其 AppCompat 等效项。
  • @Elye - 没有像AppCompatSwitch 这样的类,这是正确的。 Swich 与其他所有组件都有一点不同,因为它不能返回到 API 7(这是 AppCompat 过去支持的),因此 Switch 根本无法替代。你应该总是使用SwitchCompat
【解决方案2】:

您需要使用appcompat-v7 的一种情况是,如果您想要一个操作栏,并且您的minSdkVersion 低于11。目前,没有常用和维护的替代appcompat-v7 用于这个。

否则,appcompat-v7 是需要考虑的,但这不是必需的,使用它有一定的成本:

  • 增加了脆弱性,许多小部件被子类取代。您的布局可能需要EditText,但AppCompatActivity 会默默地将其替换为AppCompatEditText,它扩展了EditText。在理想的世界中,这不会造成任何问题。然而,设备制造商有过混淆标准小部件实现的历史。创建标准小部件的子类可能会遇到设备制造商引入的错误。我个人在EditText 上遇到过很多这种情况。

  • 增加了应用程序大小。 appcompat-v7 为您的 APK 大小增加了约 1MB。正如 Google 喜欢指出的那样,开发人员应该积极尝试减小 APK 大小,因为一些用户必须按 MB 为带宽付费(因此下载 APK 是有成本的),而且一些设备对存储空间非常吝啬。

  • 强制材料设计美学。出于政治原因,谷歌希望所有应用都使用 Material Design。 Material Design 有其拥护者和批评者。并非所有设计师都想遵循 Material Design。 appcompat-v7 可能会使实施非 Material Design 设计变得更加困难,具体取决于所需的与 Google 规范的偏差。

  • 预装应用程序的视觉二分法。 Android 4.x 设备的用户已经习惯了Holo 主题,许多非谷歌预装的应用程序将拥有基于Holo 的主题。对于碰巧使用 Google 应用程序的用户,他们可能已经接触过 Material Design,并且现在可能已经习惯了。当然,Android 5.0+ 在 Android 设备生态系统中所占的比例也在不断增长。然而,与三星、LG、SONY、HTC 等将在其 Android 4.x 设备上安装的应用程序相比,Material Design 应用程序显得格格不入。尚不清楚材料设计是否在某种程度上如此优越,以至于值得在这些设备上为用户带来差异。

这些问题中的任何一个都会阻碍吗?不。所以,如果你想使用appcompat-v7,请继续。但是,请理解appcompat-v7 是一种选择,应该有意识和有意图地做出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2016-01-10
    • 2012-01-04
    相关资源
    最近更新 更多