如果我将minAPI设置为21,我是否需要AppCompat?

时间:2016-08-09 00:43:58

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

我决定为Android制作我的最低API版本21,但这是否意味着再也不使用AppCompat了?只需使用普通的Material Design /没有AppCompat / etc?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

您需要使用appcompat-v7的一个方案是,如果您想要一个操作栏,而您的minSdkVersion低于11.目前,没有常用和维护的替代方案appcompat-v7为此。

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

  • 脆弱性增加,许多小部件被子类取代。您的布局可能需要EditText,但AppCompatActivity会默默地将其替换为扩展AppCompatEditText的{​​{1}}。在理想的世界中,这不会造成任何问题。但是,设备制造商有过混乱标准小部件实现的历史。创建标准小部件的子类可以克服设备制造商引入的错误。我亲自与EditText亲自讨论了这个问题。

  • 增加了应用尺寸。 EditText为您的APK尺寸增加约1MB。正如谷歌喜欢指出的那样,开发人员应该积极尝试降低他们的APK大小,因为有些用户必须通过MB支付带宽(因此下载APK需要付费),而且有些设备对存储非常吝啬。

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

  • 预装应用程序的视觉二分法。 Android 4.x设备的用户习惯使用appcompat-v7主题,许多非Google预安装的应用都会使用基于Holo的主题。对于恰好使用Google的应用程序的用户,他们将接触到Material Design,现在可能已经习惯了。当然,Android 5.0+在Android设备生态系统中的比例不断增长。但是,与三星,LG,SONY,HTC等Android 4.x设备上的应用相比,Material Design应用看起来不合适。目前还不清楚Material Design是否在某种程度上如此优越,以至于在这些设备上为用户带来了不同的价值。

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