Android 开发之MainActivity extends AppCompatActivity与extends Activity的区别

public class MainActivity extends AppCompatActivity

public class MainActivity extends Activity

问:AppCompatActivity和Activity有什么区别,Android studio从启动到创建MainActivity的时候就自动extends AppCompatActivity,为什么不extends Activity?

答:AppCompatActivity是继承自v4包的FragmentAvtivity,并且加入了很多新特性。这个可以很好的兼容老设备。

AppCompatActivity 和 Activity 的区别主要体现在app运行后的界面(app name显示或者不显示),对程序本身没有影响。

首先来看继承AppCompatActivity后的运行界面。
继承AppCompatActivity
再看继承了Activity后的运行界面:
继承了Activity
看到两者的区别了吧。差了明显的一个Label也就是项目的标签。标签的文字来源于AndroidManifest.xml中application中的android:label 如果继承的是Activity那这个标签的内容不会显示出来。
AndroidManifest.xml

Activity

Activity是最基础的一个,是其它类的直接或间接父类。
Activity中只能使用系统自带的host Fragment(API Level 11中加入),对应getFragmentManager方法来控制Activity和Fragment之间的交互。

FragmentActivity

在v4包中引入FragmentActivity,FragmentActivity间接继承自Activity,并提供了对v4包中support Fragment的支持。
在FragmentActivity中必须使用getSupportFragmentManager方法来处理support Fragment的交互。也可以处理support Fragment的嵌套使用。
用于使用在底部按钮组的来回切换 Fragment 页面。

AppCompatActivity

AppCompatActivity继承自FragmentActivity,同时取代了ActionBarActivity。
AppCompatActivity支持ActionBar功能,同时更推荐使用ToolBar。AppCompatActivity为支持Material Design风格控件提供了便利。

Note: v7 appcompat library
v7 appcompat library 是包含在 v7 Support Libraries里面的一个包,正是此包增加了Action Bar 用户界面的设计模式,并加入了对material design 的支持,是我们使用最多的一个兼容包。

  • v4 Support Library
    此包用在API lever 4(即Android 1.6)及更高版本之上。它包含了较多的内容,使用非常广泛,例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabStrip,Loader,FileProvider 等。

  • v7 Support Libraries
    此包是针对API level 7(即Android 2.1)及以上版本而设计的,但是v7是要依赖v4这个包的,v7支持了Action Bar以及一些Theme的兼容。

发布了45 篇原创文章 · 获赞 1 · 访问量 5260

猜你喜欢

转载自blog.csdn.net/weixin_42814000/article/details/104194226