我是Android和Android Studio的新手。我创建了一个新项目,并指定了minSdkVersion as 21
和target to 23
。
在AS完成创建活动之后,我看到默认情况下MainActivity
正在扩展AppCompatActivity
。
我在这里读到了关于AppCompatActivity
的
它说它是使用支持库操作栏功能的活动的基类
现在我的问题是:
- 既然我的应用程序的minSdkVersion是21,为什么我需要我的活动来扩展AppCompatActivity
-
为什么AS默认情况下使我的活动扩展AppCompatActivity?
-
我的活动是否需要扩展AppCompatActivity,或者考虑到我的
minSdkVerion
,仅扩展活动就足够了? -
如果我的行为没有扩展AppCompatActivity,我会错过什么?
任何解释都会很有帮助。感谢
如果您使用操作栏,我认为您应该扩展AppCompatActivity
点击此处阅读更多
从Android 3.0(API 11级)开始,所有使用默认主题的活动都有一个ActionBar作为应用程序栏。然而,在各种Android版本中,应用程序栏功能已逐渐添加到本地ActionBar中。因此,本地ActionBar的行为会有所不同,这取决于设备可能使用的安卓系统版本。相比之下,最新的功能被添加到支持库版本的Toolbar中,并且在任何可以使用支持库的设备上都可以使用。
因此,您应该使用支持库的Toolbar类来实现活动的应用程序栏。使用支持库的工具栏有助于确保您的应用程序在最广泛的设备上具有一致的行为。例如,Toolbar小部件在运行Android 2.1(API第7级)或更高版本的设备上提供素材设计体验,但除非设备运行Android 5.0(API第21级)或更低版本,否则原生动作栏不支持素材设计。
活动可以帮助您避免额外的库,但不提供activobBar功能。
在修订版22.1.0之前,操作栏是通过扩展ActionBarActivity提供的,现在已弃用
正如您所说,确实如此。我们不必扩展AppCompatActivity
。但是许多开源库使用AppCompatActivity
来获取较低API级别项目的功能,第三部分库将要求MainActivity
扩展AppCompatActivity
。因此,您可以实现自己的lib或扩展AppCompatActivity
。
AppCompatActivity
是支持库的一部分,因此您还可以使用支持库。简言之,扩展AppCompatActivity
的活动将具有最近API中的"活动"功能(但,只要该功能的实现构建在支持库中即可)。
您可以从文档中阅读以下内容:
使用支持与框架API
支持库提供的类和方法与安卓框架中的API非常相似。一旦发现这一点,您可能会怀疑是否应该使用框架版本的API或等效的支持库。以下是应该使用支持库类来代替Framework API的指导原则:
特定功能的兼容性-如果要在运行早期版本平台的设备上支持最新的平台功能,请使用支持库中的等效类和方法。
相关库功能的兼容性-更复杂的支持库类可能依赖于一个或多个额外的支持库类别,因此您应该为这些依赖项使用支持库类别。例如,ViewPager支持类应与FragmentPagerAdapter或FragmentStatePagerAdaper支持类一起使用。
通用设备兼容性-如果您没有打算以向后兼容的方式与应用程序一起使用的特定平台功能,那么在应用程序中使用支持库类仍然是一个好主意。例如,您可能希望使用ActivityCompt来代替框架Activity类,这样您就可以在以后利用较新的功能,例如合并Android 6.0中引入的新权限模型(API 23级)。