前言:
在突击复习后结束Android考试的战斗,现在该回过头来再好好看看“战场”上留下的“痕迹”。每一个战役虽然都很“残酷”,但也都有值得留下和记忆的地方也,有它们美好的一面。
第一章
1.Android发布日期、公司:2007年11月5日由Google/谷歌发布。
2.简述Android的体系结构:
Android系统采用分层架构,由高到低分为4层,依次是应用程序层(Application)、应用程序框架层(Application Framework)、核心类库(Libraries)和Linux内核(Linux Kernel)。
①应用程序层:
应用程序层是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层,例如系统自带的联系人程序、短信程序,或者从Google Play上下载的小游戏等都属于应用程序层。
②应用程序框架层:
应用程序框架层主要提供了构建应用程序时用到的各种API。
③核心类库:
核心类库中包含了系统库及Android运行环境。主要是通过C/C++库来为Android系统提供主要的特性支持。
Android运行时库(Android Runtime)主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用,另外Android运行时库中还包括了dalvik虚拟机,它使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的dalvik虚拟机实例。
④Linux内核:
Android系统主要基于Linux内核开发,Linux内核层为Android设备的各种硬件提供了底层驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、电源管理驱动等。
3.市场上主流智能手机操作系统:
①Windows Phone、②Android、③iPhone
4.Android开发环境:
①Java开发工具包JDK、②Eclipse开发环境、③Android软件开发包Android SDK、④Android开发工具包ADT。
5.Android应用程序目录结构:(主要的)
①src:该目录是放置所有Java代码的地方。在src目录中可以创建多个包,每个包中可以存放不同的文件或者Activity。
②gen:该目录是自动生成的,主要有一个R.java文件,在项目中添加的任何资源文件都会在其中生成一个相应的资源Id,这个文件一定不要手动修改,当res资源文件修改时,R.java文件就会重新编译。(R文件的作用)
③AndroidManifest.xml:
该文件是整个项目的配置文件,在程序中定义的四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加声明权限,也可以重新指定创建项目时程序最低兼容的版本和最高版本。清单文件配置的信息会配置到Android系统中,当程序运行时,系统会先找到清单文件中配置的信息,然后根据设置的信息打开相应的组件。
6.Android应用程序安装过程:
①Java编译器将.java文件编译成.class文件;
②SDK中的dx工具将.class文件转译为.dex文件;
③将dex文件和资源文件打包成压缩文件并签名,成为apk文件;
④将apk文件安装的手机(模拟器)。
第二章
1.常用控件:(基本属性的写法和功能)
①TextView:文本框,可以在界面上显示文字,通常作为提示信息展示。
②EditText:编辑框,可以在上面输入文字,它有一个inputType属性,可以控制输入的内容只能是数字或者字母等。
③Button:按钮,用于响应用户的点击事件/设置监听器。
④RadioButton:单选按钮,用RadioGroup包裹,RadioGroup(单选按钮组)里面可以放置多个RadioButton,一组RadioButton中只能有一个被选中。
⑤Toast:显示文本提示信息。该组件有两个方法:makeText()和show(),其中makeText()方法用于设置要显示的字符串,show()方法显示消息框。
语法:
Toast.makeText(Context,Text,Time).show();
a.Context是一个抽象类,表示应用程序环境的信息,即当前组件的上下文环境,在Activity中使用“当前主程序类名.this”即可。
b.Text是要显示的消息字符串。
c.Time表示显示时长,该属性是特定的值,一般用int类型整数0和1表示,0代表short,即表示较短时间显示;1代表long,即表示较长时间显示。
例子:
Toast.makeText(this,“按键弹起!”,0).show();
⑥ListView:以列表的形式展示具体的数据内容,并且能够根据数据的长度自适应屏幕显示。使用时需要用适配器(Adapter)对其进行数据适配,可以将适配器理解为界面数据绑定。
2.五个布局类:
①FrameLayout:(框架布局、帧布局)一层一层重叠显示。最先添加的在最底层,最后添加的在最上层。<FrameLayout></FrameLayout>
②LinearLayout:(线性布局)主要有两种形式,一种是水平线性布局,一种是垂直线性布局。
常用属性:
android:layout_width=“match_parent”/“wrap_content”/长度单位0dp
android:layout_height=“wrap_content”等
android:orientation=“vertical”/“horizontal”,vertical表示线性布局是垂直显示的,horizontal表示线性布局是水平显示的,默认为horizontal。
③AbsoluteLayout:(绝对布局)需要通过x,y坐标来控制每个空间的位置,用的不多了。
④RelativeLayout:(相对布局)在Eclipse中开发Android程序时,默认采用的就是相对布局。两种形式:相对于容器而言、相对于控件而言。为了准确定位布局中得控件,相对布局提供了很多属性。
常用属性以主要含义:p23
android:layout_toRightOf:在指定控件的右边
android:layout_below:在指定控件的下边
android:layout_alignLeft:与指定控件左对齐
⑤TableLayout:(表格布局)无宽度和 高度属性,由插入的控件控制。(行数由TableRow控制,每行有多少控件就有多少列)。P26
第三章
1.Activity基本含义:
Activity是Android应用程序的四大组件之一,它负责管理Android应用程序的用户界面。一个应用程序一般会包含若干个Activity,每个Activity负责一个用户界面的展示。
注意:(在清单文件中进行注册)p49
MainActivity要继承Activity类
‚在AndroidManifest.xml文件中,对ActivityExample进行注册,
代码:
<activity
android:name=”cn.itcast.activitybasic.ActivityExample”
android:label=”ActivityExample”>
<intent-filter>
<action android:name=”android.intent.action.MAIN”/>
<category android:name=”android.intent.category.LAUNCHER”/>
</intent-filter>
</activity>
要把ActivityExample设置为应用程序默认启动的界面,需要在<activity>节点中配置<intent-filter>节点。该节点中的<action android:name=”android.intent.action.MAIN”/>表示将当前Activity设置为程序最先启动的Activity。
<category android:name=”android.intent.category.LAUNCHER”/>
表示让当前Activity在桌面上创建图标。
2.Activity三种状态:
Activity的生命周期中分为状态,分别是运行状态、暂停状态和停止状态。
运行状态:当Activity在屏幕的最前端时,它是可见的、有焦点的,可以用来处理用户的创建操作,如点击、双击、长按事件等,这种状态称为运行态。
暂停状态:在某些情况下,Activity对用户来说仍然是可见的,但它不再拥有焦点,即用户对它的操作是没有实际意义的。例如,当最上面的Activity没有完全覆盖屏幕或者是透明的,被覆盖的Activity仍然对用户可见,并且存活。
停止状态:当Activity完全不可见时,它就处于停止状态,但仍然保留着用户状态和成员信息。
重点:
Activity从一种状态转变成另一种状态时会触发一些事件,执行一些回调方法来通知状态的变化,具体方法如下:
1)onCreate(Bundle savedInstanceState):创建时执行。(在生命周期中只调用一次)
2)onStart():可见时执行。
3)onRestart():回到前台,再次可见时执行。
4)onResume():获取焦点时执行。
5)onPause():失去焦点时执行。(暂停状态)
6)onStop():用户不可见进入后台时执行。(停止状态)
7)onDestroy():销毁时执行。
3.Activity的生命周期:
Activity生命周期模型图例(p50)
4.Avtivity的4启动模式:
Avtivity的启动模式有4种,分别是standard、singleTop、singleTask、singleInstance。
①standard模式:标准模式,是Avtivity的默认启动模式,在此模式下,每当启动一个新的Avtivity,它就会进入任务栈,并处于栈顶的位置。(满足“先进后出”原则)
②singleTop模式:单一顶部模式,与standard模式类似,不同的是,当启动的Avtivity已经位于栈顶时,则直接使用它不创建新的实例。如果启动的Avtivity没有位于栈顶时,则创建一个新的实例位于栈顶。
③singleTask模式:单一任务模式,每次启动该Avtivity时,系统首先会检查栈中是否存在该活动的实例,如果发现已经存在则直接使用该实例,并将当前Avtivity之上的所有Avtivity出栈,如果没有发现则创建一个新的实例。
④singleInstanc模式:单一实例模式,指定为singleInstance模式的Avtivity会启动一个新的任务栈来管理这个Avtivity。(一般一个应用程序只创建一个任务栈/只会被创建一个实例)
5.Intent:
①作用:用于激活组件(Avtivity、服务、广播接收者),承担了Android应用程序三大核心组价相互的通信功能。
②Android中Intent寻找目标组件的方式有两种,一种是显示意图,另一种是隐式意图。
两者区别:
显示意图开启组件时必须要指明组件的名称,一般只在本应用程序切换组件时使用。
隐式意图:没有明确指明组件名的意图为隐式意图。它不仅可以开启本应用的组件还可以开启其他应用的组件,但必须使用意图过滤器IntentFilter(<intent-filter></intent-filter>)
6.Activity中数据的传递:
Intent可以用来开启Activity,同时它也可以用来在Activity之间传递数据。
使用Intent传递数据只需要调用putExtra()方法将想要存储的数据存储在Intent中即可:
intent.putExtra(“extra_data”,data);
//一个参数接收的是key,第二个参数接收的是value
取出传递来的数据:
String data= = intent.getStringExtra(“extra_data”);
7.回传数据的方法及参数:
startActivityForResult(intent,1)方法实现回传数据,该方法有两个参数,第一个是Intent,第二个是参数的请求码,用于判断数据的来源。
setResult(1,intent)方法接收两个参数,第一个参数resultCode结果码,一般使用0或1;第二个参数则是把带有数据的Intent传递回去,最后调用finish()方法销毁当前Activity。