我对Android和Android Studio都很陌生。我创建了一个新项目,并指定了minSdkVersion as 21
和target to 23
。
完成AS创建活动后,我看到默认情况下MainActivity
正在扩展AppCompatActivity
。
我读到了AppCompatActivity
here
它表示它是使用 support library 操作栏功能的活动的基类。
现在我的问题是:
为什么AS默认会将我的活动扩展为 AppCompatActivity ?
我的活动是否有必要扩展 AppCompatActivity ,或者仅仅考虑我的minSdkVerion
扩展活动就足够了?
如果我的行为不能扩展 AppCompatActivity ,我会想念什么?
任何解释都会非常有帮助。感谢
答案 0 :(得分:1)
如果您使用操作栏
,我认为您应该扩展AppCompatActivity从Android 3.0(API级别11)开始,使用默认主题的所有活动都将ActionBar作为应用栏。但是,app bar功能已逐渐添加到本机ActionBar中,而不是各种Android版本。因此,本机ActionBar的行为会有所不同,具体取决于设备可能使用的Android系统版本。相比之下,最新功能已添加到支持库的工具栏版本中,并且可以在任何可以使用支持库的设备上使用。
出于这个原因,您应该使用支持库的工具栏类来实现您的活动'应用栏。使用支持库的工具栏有助于确保您的应用在最广泛的设备上具有一致的行为。例如,工具栏小部件在运行Android 2.1(API级别7)或更高版本的设备上提供材料设计体验,但本机操作栏不支持材料设计,除非设备运行的是Android 5.0(API级别21)或后面。
答案 1 :(得分:0)
AppCompatActivity在api级别7之后为您提供ActionBar的附加功能。
Activity可以帮助您避免使用额外的库但不提供actiobBar功能。
在修订版22.1.0之前,Action bar是通过扩展现在弃用的ActionBarActivity提供的
答案 2 :(得分:0)
好吧,正如你所说的那样,确实如此。我们不必延伸AppCompatActivity
。但是很多开源库使用AppCompatActivity
来获取功能以降低API级项目,第三部分库将要求MainActivity
扩展AppCompatActivity
。因此,您可以实现自己的 lib 或扩展AppCompatActivity
。
答案 3 :(得分:0)
AppCompatActivity
是支持库的一部分,因此您还可以使用支持库。简而言之,扩展AppCompatActivity
的活动将具有最近API中的活动功能( 但 ,只要能力的实施建立在支持库)。
您可以阅读documentation中的以下内容:
使用支持与框架API
支持库提供的类和方法与Android框架中的API非常相似。在发现这一点后,您可能想知道是否应该使用API的框架版本或等效的支持库。以下是何时应使用支持库类代替Framework API的指南:
特定功能的兼容性 - 如果要在运行早期版本平台的设备上支持最新平台功能,请使用支持库中的等效类和方法。
相关库功能的兼容性 - 更复杂的支持库类可能依赖于一个或多个其他支持库类,因此您应该为这些依赖项使用支持库类。例如,ViewPager支持类应与FragmentPagerAdapter或FragmentStatePagerAdapter支持类一起使用。
常规设备兼容性 - 如果您没有特定的平台功能,您打算以向后兼容的方式使用您的应用,那么使用支持库类仍然是一个好主意在你的应用程序中例如,您可能希望使用ActivityCompat代替框架Activity类,以便稍后可以利用更新的功能,例如合并Android 6.0(API级别23)中引入的新权限模型。
< / LI>