我决定为Android制作我的最低API版本21,但这是否意味着再也不使用AppCompat了?只需使用普通的Material Design /没有AppCompat / etc?
答案 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
是一个选择,应该有意识地和有意识地做出。