Android 基础课堂
在上周的基础课堂中,我们说过了,本系列的基础课堂将会结合一个应用的开发过程慢慢带大家慢慢深入理解Android开发的过程,故该基础课堂和正常的Android入门教程不太一样,不会像正常的Android入门教程那样,巴拉巴拉的从四大组件、各种控件等等开始讲,而是会遵从用到什么讲什么的原则,然后慢慢 涵盖各组件、各控件,在实际场景中学习组件、控件的应用,我觉得对于入门来说,是比较好接受的,当然入门之后,我们可以反过来把Android的整体架构再理一遍过去,这时候来理架构比起一入门就理架构,我觉得会比较好懂点。
至于我们要开发一个什么样的应用呢,这个嘛,慢慢的就知道了,哈哈随着基础课堂的延续,该应用会慢慢的展现在我们眼前,那么下面就让我们进入到今天的基础课堂吧。
第二课、从创建一个Android工程开始
- 一、Hello Android
- 在第一课中,我们已经搭建完Android开发环境了,那么接下来我们就来用Android Studio(下文中将用AS简写来代表Android Studio)创建我们的第一个工程吧
- 打开我们安装完的AS,将会看到如下界面
- 由于我们是要创建一个新的工程,所以我们点击Start a new Android Studio project 来创建工程,然后我们会进入下面这个界面
- 我们可以看到,这里有三项是需要我们填写的,他们分别是
- Application name:这里填写的是我们的工程名
- Company Domain:这里填写公司域名,它的倒序加上我们的工程名构成我们的包名,包名是标识一个应用的标志
- Project location:工程保存的位置
- 我们可以根据自己的需求去填写上面三项,然后单击next进入到下一步,进入到如下界面
- 我们直接使用默认设置即可,其中的Minimum SDK用于标识我们的这个应用向下兼容的最低Android版本,点击next进入下一步
- 该步为我们的应用添加第一个Activity (Activity 是啥?请往下看),在这里可以选择Activity 的主题样式,当然,我们也可以选择Add No Activity来设置不默认创建第一个Activity ,这里我们默认选择创建一个Empty Activity,单击next
- 可以看到,这里需要我们填写Activity Name 和 Layout Name,即该Activity的名称和他对应的布局Layout的名称,填完之后,单击Finish,这时我们的工程就创建完了,然后我们就会进入到我们的工程界面了
-
可以看到,工程下的文件夹啥的还是比较多的,同样的,我们仅先对要用到的几个文件夹做下介绍,其余的文件夹还是本着用到什么介绍什么的原则,那么下面让我们来看看一些文件夹吧
- ①:这个文件夹中存放着我们的逻辑代码,包括一些页面逻辑,事件处理等等,所以平时我们写的代码,大多都是出于这个文件夹这下的
- ②:这个文件夹存放着我们的布局文件,最直观的解释就是,我们在手机上看到的界面,就是通过这个文件夹里的布局文件描述的,当然也不是绝对的,因为我们也可以通过代码直接去创建布局,而不使用可视化.xml去创建视图,这个在接下来我们会讲到用两者分别如何创建布局
- 从简单了讲,一个APP就是界面加逻辑,上面两个文件夹可以涵盖这些所需的东西,然而这只是从最简单的demo来说而已,真正上线的APP,还会涉及到其他文件夹
- 二、初识Activity
- 在上面创建工程的时候,可以选择是否创建第一个Activity ,以及创建什么样式的Activity ,那么本着用到什么讲解什么的原则,我们现在就来讲讲Activity
- Activity 是四大组件之一,并且是我们最经常用到的组件,Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。Activity 本身是没有界面的,Activity 类创建了一个窗口,通过setContentView(View)接口把.xml界面放到Activity 创建的窗口上。当Activity 指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的Activity (使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的Activity 都要和用户打交道,说简单点就是,我们在手机上看到的页面,基本上都是需要一个Activity 承载的。
- 下面我们来看看Activity从创建到被销毁之间,都调用了哪些函数做了哪些事,即Activity的生命周期
- 这是Activity的生命周期图,我们可以看到,从Activity创建开始到被销毁,会依次调用onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy,那么具体在什么时候调用这些方法呢?
- 在一个Activity正常启动过程中,这些方法调用的顺序是onCreate -> onStart -> onResume;在Activity被kill掉的时候方法顺序是onPause -> onStop -> onDestroy,这是Activity的一个完整的生命周期。但是从创建到被销毁,之间可能会经过各种情况,例如对于中断处理,比如来电话了,这时候会调用的是onPause -> onStop,接完电话重新回答页面时onStart -> onResume;如果当前应用程序的是一个Theme为Translucent(半透明) 或者Dialog 的Activity那么中断就是onPause ,恢复的时候onResume;关于Activity在各种特殊情况下调用哪些生命周期函数,可以通过重载这些函数打印log,然后针对特殊情况进行测试,这样我们就能清楚的知道Activity在各种情况下分别调用了什么方法了。
- 在Activity的生命周期的各个函数中,我们应该做些什么呢?
onCreate:在这里创建界面,做一些数据的初始化工作;
onStart: 到这一步变成“用户可见不可交互”的状态;
onResume:变成和用户可交互的,(系统通过栈的方式管理Activity,即当前Activity在栈的最上端,运行完弹出栈,则回到上一个Activity);
onPause:到这一步Activity是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来。
onStop:变得不可见 ,被下一个Activity覆盖了
onDestroy:这是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断。
- 关于Activity的跳转以及通信之类的内容,我们还是本着用到的时候再讲解的原则,在真正用到的地方再去讲解它的用法及功能,这将有利于我们在实际应用中理解它,而不至于我们现在讲了,到真正使用的时候,如果不重新讲会遗忘它的用法与功能,对理解不利。
- 本次的基础课堂,我们把Android工程搭建起来了,也讲了Android中的四大组件之一Activity的一些内容,下次基础课堂,我们将会进入我们的应用的第一个页面的相关内容的搭建,下节课见啦~