Android中关于Activity/ActionBarActivity/AppCompatActivity的区分与理解
2016-01-28 16:36
274 查看
之前一直用Eclipse写Android,最近换到了Android Studio,因为毕竟是Google推荐的,也是未来的大势所趋,在使用过程中,遇到一些关于Activity的问题,下面来讨论下。
先说Eclipse。先新建项目,其中Minimum Required SDK 选择API14 :Android 4.0,(Icecream Sandwich),Target SDK和Compile With选择API19:Android 4.4(KitKat),新建完成后,MainActivity 自动继承自Activity。以下是程序运行后的截图:
。
可以发现,在主界面顶端会出现ActionBar,显示当前Activity的名称AndroidTest。这是Eclipse的情况,下面看一下Android Studio中的情况。
在Android Studio中先新建一个Project,Application name为AndroidTest,然后在platform和SDK中选择Phone And Tablet.Minimum SDK选择API 14:Android 4.0(IceCreamSandwich),新建完成后,自动会在Project中新建一个Module,名称为app.此时可以发现MainActivity是默认继承自ActionBarActivity.并且在ActionBarActivity上有一条删除线,表现该ActionBarActivity已经过时了,查看提示会发现:“android.support.v7.app.ActionBarActivity
is deprecated”.表示已经是过时的了,或者说是不推荐使用了。以下是程序运行后的截图:
。
可以发现在顶端还是会出现ActionBar,默认显示项目名称AndroidTest.与Eclipse中的项目没有任何区别,只是MainActivity继承的父类分别是Activity和ActionBarActivity而已。
由于Android开发中一个Class的过时总会让人不爽,下面将AS中继承的ActionBarActivity手动改成Activity.并导入对应的包,程序运行后的截图如下所示:
。
可以发现顶端的ActionBar不见了。这就和Eclipse中完全不同了。同样是继承自Activity,界面UI却不同。这也是Eclipse和AS开发Android项目的区别之一。
如果要在AS中也使用ActionBar,并且不使用已经的过时的ActionBarActivity,有什么办法呢?就是使用AppCompatActivity.在AS中把MainActivity继承自AppCompatActivity,并导入对应的包,程序运行后截图
:
。
可以发现我们可爱的ActionBar又出现了。并且AppCompatActivity并没有过时。
以后在我们的项目中,可以通过手动修改Activity的继承父类,来决定是否显示ActionBar。并且对程序没有其他影响。同样的代码在Eclipseh和Android Studio中会出现较大差异,需要区别对待。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
先说Eclipse。先新建项目,其中Minimum Required SDK 选择API14 :Android 4.0,(Icecream Sandwich),Target SDK和Compile With选择API19:Android 4.4(KitKat),新建完成后,MainActivity 自动继承自Activity。以下是程序运行后的截图:
。
可以发现,在主界面顶端会出现ActionBar,显示当前Activity的名称AndroidTest。这是Eclipse的情况,下面看一下Android Studio中的情况。
在Android Studio中先新建一个Project,Application name为AndroidTest,然后在platform和SDK中选择Phone And Tablet.Minimum SDK选择API 14:Android 4.0(IceCreamSandwich),新建完成后,自动会在Project中新建一个Module,名称为app.此时可以发现MainActivity是默认继承自ActionBarActivity.并且在ActionBarActivity上有一条删除线,表现该ActionBarActivity已经过时了,查看提示会发现:“android.support.v7.app.ActionBarActivity
is deprecated”.表示已经是过时的了,或者说是不推荐使用了。以下是程序运行后的截图:
。
可以发现在顶端还是会出现ActionBar,默认显示项目名称AndroidTest.与Eclipse中的项目没有任何区别,只是MainActivity继承的父类分别是Activity和ActionBarActivity而已。
由于Android开发中一个Class的过时总会让人不爽,下面将AS中继承的ActionBarActivity手动改成Activity.并导入对应的包,程序运行后的截图如下所示:
。
可以发现顶端的ActionBar不见了。这就和Eclipse中完全不同了。同样是继承自Activity,界面UI却不同。这也是Eclipse和AS开发Android项目的区别之一。
如果要在AS中也使用ActionBar,并且不使用已经的过时的ActionBarActivity,有什么办法呢?就是使用AppCompatActivity.在AS中把MainActivity继承自AppCompatActivity,并导入对应的包,程序运行后截图
:
。
可以发现我们可爱的ActionBar又出现了。并且AppCompatActivity并没有过时。
以后在我们的项目中,可以通过手动修改Activity的继承父类,来决定是否显示ActionBar。并且对程序没有其他影响。同样的代码在Eclipseh和Android Studio中会出现较大差异,需要区别对待。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
相关文章推荐
- iOS:CYLTabBarController的具体使用实例:实现新浪微博的主流框架
- iOS开发-frame与bounds的区别
- ios textField详解
- iOS8开始默认语言有变化
- 4.Swift 新特性运算符
- android studio设置内存
- iOS开发笔记--基于面向协议MVP模式下的软件设计
- Android开发之启动页面Splash Screen
- ios改变导航栏颜色及其字体颜色
- iOS 在xib或者storyboard中添加AutoLayout后,在代码中修改AutoLayout约束条件
- android utf8转换
- Android Studio上的几个插件
- IOS设置QQ小红点消除的方法(一键退朝)
- iOS开发笔记--详解苹果的黑魔法 – KVO 的奥秘
- Unity3d中单例模式的使用
- android webview 设置
- swift "#waining"
- iOS开发笔记--iOS 事件处理机制与图像渲染过程
- Unity Assets目录下的特殊文件夹名称
- iOS开发笔记--关于 @synchronized,这儿比你想知道的还要多