如果我将minAPI设置为21,我需要使用AppCompat吗?

9

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


你这么说好像从API 21到24没有任何变化(实际上确实有变化)。 - ianhanniballake
2
我知道有些变化。但那跟这件事有什么关系吗? - AJJ
2个回答

7
不,你应该始终使用AppCompat。这可以确保你的应用在所有API级别上都是一致的,并且你可以访问所有新的API(例如使用只在API 23中引入的彩色按钮)。
许多其他库,如Design Support Library也需要使用AppCompat。

2
在什么情况下不使用AppCompat? - AJJ
如果您正在构建一个系统应用程序,该应用程序不会在Play商店上发布(其中向后兼容性/跨设备一致性并不重要),或者是在Unity中的游戏等,您根本不使用Android框架视图。 - ianhanniballake
在所有的活动中扩展AppCompatActivity就足够了吗?还是我应该同时使用AppCompatActivity和所有的AppCompat视图呢? - Micro
2
如果您使用AppCompatActivity,则常规视图会在运行时被其AppCompat等效视图所替换。 - ianhanniballake
1
@Elye - 没有名为AppCompatSwitch的类,这是正确的。Swich与其他组件略有不同,因为它在API 7之前不可用(这是AppCompat以前支持的版本),因此根本没有可替代的Switch。您应该始终使用SwitchCompat - ianhanniballake
显示剩余4条评论

4
如果你想要一个操作栏,并且你的minSdkVersion低于11,那么你需要使用appcompat-v7。目前,没有普遍使用和维护的替代品可以代替它。
否则,考虑使用appcompat-v7,但这不是必须的,而且使用它也有一些明显的成本:
- 更加脆弱,许多小部件被替换为子类。你的布局可能会调用EditText,但AppCompatActivity会默默地将其替换为AppCompatEditText,它扩展了EditText。在理想情况下,这不会造成任何问题。然而,设备制造商过去常常搞乱标准小部件实现的历史。创建标准小部件的子类可能会遇到由设备制造商引入的错误。我个人在EditText方面遇到了很多这样的问题。 - 增加应用程序大小。appcompat-v7会增加大约1MB的APK大小。正如Google所指出的,开发者应该积极尝试减少他们的APK大小,因为一些用户必须按MB付费带宽(因此下载APK有成本),而一些设备对存储非常吝啬。 - 强制使用Material Design审美。出于自己的政治原因,Google希望所有应用程序都使用Material Design。Material Design有其支持者和反对者。并非所有设计师都想遵循Material Design。根据所需的偏差程度,appcompat-v7可能会使实现非Material Design设计更加困难。 - 与预安装应用程序的视觉二分法。Android 4.x设备的用户习惯于Holo主题,许多非Google预安装的应用程序将具有基于Holo的主题。对于使用Google的应用程序的用户,他们已经接触到了Material Design,并且现在可能已经习惯了它。当然,Android 5.0+正不断成为Android设备生态系统的一部分。但是,在这些设备上,与三星、LG、SONY、HTC等公司的应用程序相比,Material Design应用程序看起来格格不入。目前还不清楚Material Design是否如此卓越,以至于对这些设备上的用户来说值得产生差异。
这些问题中有哪些是致命问题?没有。因此,如果你想使用appcompat-v7,请放心使用。但请理解,appcompat-v7是一个选择,应该有意识地进行选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接