安卓Word下载.docx
《安卓Word下载.docx》由会员分享,可在线阅读,更多相关《安卓Word下载.docx(22页珍藏版)》请在冰点文库上搜索。
(-)documentation.html
(-)RELEASE_NOTES.html
1.add-one目录下的是Google提供地图开发的库函数,支持基于GoogleMap的地图开发
2.docs目录下的是AndroidSDK的帮助文档,通过根目录下的documentation.html文件启动
3.platforms目录中存在两个子目录android-1.1和android-1.5,分别用来保存1.1版本和1.5版本的AndroidSDK的库函数、外观样式、程序示例和辅助工具等
4.tools目录下的是通用的Android开发和调试工具
5.usb_driver目录下保了用于amd64和x86平台的USB驱动程序
6.RELEASE_NOTES.html是AndroidSDK的发布说明
2.2.3开发工具
1.Android模拟器
AndroidSDK的最重要的工具;
支持加载SD卡映像文件,更改模拟网络状态,延迟和速度,模拟电话呼叫和接收短信等;
不支持接听真实电话,USB连接,摄像头捕获,设备耳机,电池电量和AC电源检测,SD卡插拔检查和使用蓝牙设备;
Android模拟器外观
2.Android调试器
连接Android设备和模拟器的工具;
客户端/服务器程序,包含守护程序、服务器程序和客户端程序
3.DDMS
Android系统中内置的调试工具;
监视Android系统中进程、堆栈信息,查看logcat日志,实现端口转发服务和屏幕截图功能,模拟器电话呼叫和SMS短信,以及浏览Android模拟器文件系统等
3.2Android程序结构
⏹在“PackageExplore”中,ADT以工程名称HelloAndroid作为根目录,将所有字段生成的和非自动生成的文件都保存在这个根目录下
⏹根目录包含四个子目录:
src、assets、res和gen,一个库文件android.jar,以及两个工程文件Androidmanifest.xml和default.properties
⏹src目录是源代码目录,所有允许用户修改的java文件和用户自己添加的java文件都保存在这个目录中
⏹HelloAndroid工程建立初期,ADT根据用户在工程向导中的“CreateActivity”选项,自动建立HelloAndroid.java文件
⏹HelloAndroid.java是Android工程向导根据Activity名称创建的java文件,这个文件完全可以手工修改。
为了在Android系统上显示图形界面,需要使用代码继承Activity类,并在onCreate()函数中声明需要显示的内容
⏹gen目录是1.5版本新增的目录,用来保存ADT自动生成的java文件,例如R.java或AIDL文件
⏹R.java文件是ADT自动生成的文件,包含对drawable、layout和values目录内的资源的引用指针,Android程序能够直接通过R类引用目录中的资源
⏹引用资源
资源引用有两种情况:
一种是在代码中引用资源;
另一种是在资源中引用资源
⏹android.jar文件是Android程序所能引用的函数库文件,Android通过平台所支持API都包含在这个文件中
⏹assets目录用来存放原始格式的文件,例如音频文件、视频文件等二进制格式文件。
此目录中的资源不能被R.java文件索引。
,所以只能以字节流的形式读取。
一般情况下为空
⏹res目录是资源目录,有三个子目录用来保存Android程序所有资源
⏹main.xml文件,是界面布局文件,利用XML语言描述的用户界面
⏹界面布局的相关内容将在第5章用户界面设计中进行详细介绍
⏹AndroidManifest.xml是XML格式的Android程序声明文件,包含了Android系统运行Android程序前所必须掌握的重要信息,这些信息包含应用程序名称、图标、包名称、模块组成、授权和SDK最低版本等,而且每个Android程序必须在根目录下包含一个AndroidManifest.xml文件
⏹AndroidManifest.xml文件的根元素是manifest,包含了xmlns:
android、package、android:
versionCode和android:
versionName共4个属性
⏹manifest元素仅能包含一个application元素,application元素中能够声明Android程序中最重要的四个组成部分,包括Activity、Service、BroadcastReceiver和ContentProvider,所定义的属性将影响所有组成部分
⏹activity元素是对Activity子类的声明,必须在AndroidManifest.xml文件中声明的Activity才能在用户界面中显示
⏹intent-filter中声明了两个子元素action和category,intent-filter使HelloAndroid程序在启动时,将.HelloAndroid这个Activity作为默认启动模块
⏹可视化编辑器
双击AndroidManifest.xml文件,直接进入可视化编辑器,用户可以直接编辑Android工程的应用程序名称、包名称、图标、标签和许可等相关属性
⏹default.properties文件记录Android工程的相关设置,该文件不能手动修改,需右键单击工程名称,选择“Properties”进行修改
⏹在default.properties文件中只有第12行是有效代码,说明Android程序的编译目标
4.2Android组件
⏹组件是可以调用的基本功能模块,Android应用程序就是由组件组成的
⏹Android系统有四个重要的组件,分别是Activity、Service、BroadcaseReceiver和ContentProvider
⏹Activity
❑Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件
❑Android应用程序可以包含一个或多个Activity,一般在程序启动后会呈现一个Activity,用于提示用户程序已经正常启动
❑在界面上的表现形式:
全屏窗体,非全屏悬浮窗体,对话框
⏹Service
❑Service用于没有用户界面,但需要长时间在后台运行的应用
⏹BroadcaseReceiver
❑BroadcaseReceiver是用来接受并响应广播消息的组件
❑不包含任何用户界面
❑可以通过启动Activity或者Notification通知用户接收到重要信息
⏹Notification能够通过多种方法提示用户,包括闪动背景灯、震动设备、发出声音或在状态栏上放置一个持久的图标
⏹ContentProvider
❑ContentProvider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据
⏹私有数据可以是存储在文件系统中的文件,也可以是SQLite中的数据库
❑Android系统内部也提供一些内置的ContentProvider,能够为应用程序提供重要的数据信息
4.3Activity生命周期
⏹Activity生命周期
❑Activity生命周期指Activity从启动到销毁的过程
❑Activity表现为四种状态,分别是活动状态、暂停状态、停止状态和非活动状态
⏹活动状态,Activity在用户界面中处于最上层,完全能不用户看到,能够与用户进行交互
⏹暂停状态,Activity在界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互
⏹停止状态,Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡
⏹非活动状态不在以上三种状态中的Activity则处于非活动状态
⏹Activity生命周期分类
❑Activity的生命周期可分为全生命周期、可视生命周期和活动生命周期
❑每种生命周期中包含不同的事件回调函数
⏹全生命周期
❑全生命周期是从Activity建立到销毁的全部过程,始于onCreate(),结束于onDestroy()
⏹可视生命周期
❑可视生命周期是Activity在界面上从可见到不可见的过程,开始于onStart(),结束于onStop()
⏹活动生命周期
❑活动生命周期是Activity在屏幕的最上层,并能够与用户交互的阶段,开始于onResume(),结束于onPause()
5.1用户界面基础
用户界面(UserInterface,UI)是系统和用户之间进行信息交换的媒介,实现信息的内部形式与人类可以接受形式之间的转换
⏹Android用户界面框架
❑Android用户界面框架(AndroidUIFramework)采用MVC(Model-View-Controller)模型
⏹提供了处理用户输入的控制器(Controller)
⏹显示用户界面和图像的视图(View),以及保存数据和代码的模型(Model)
5.3界面布局的方式
1.线性布局2.框架布局3.表格布局4.相对布局
5.绝对布局
5.5界面事件
⏹5.5.1按键事件
以EditText控件中的按键事件为例,说明Android系统界面事件传递和处理过程,假设EditText控件已经设置了按键事件监听器
当用户按下键盘上的某个按键时,控制器将产生KeyEvent按键事件
Android系统会首先判断EditText控件是否设置了按键事件监听器,因为EditText控件已经设置按键事件监听器OnKeyListener,所以按键事件先传递到监听器的事件处理函数onKey()中
事件能够继续传递给EditText控件的其他事件处理函数,完全根据onKey()函数的返回值来确定
如果onKey()函数返回false,事件将继续传递,这样EditText控件就可以捕获到该事件,将按键的内容显示在EditText控件中
如果onKey()函数返回true,将阻止按键事件的继续传递,这样EditText控件就不能够捕获到按键事件,也就不能够将按键内容显示在EditText控件中
Android界面框架支持对按键事件的监听,并能够将按键事件的详细信息传递给处理函数
为了处理控件的按键事件,先需要设置按键事件的监听器,并重载onKey()函数
示例代码如下
1.entryText.setOnKeyListener(newOnKeyListener(){
2.@Override
3.publicbooleanonKey(Viewview,intkeyCode,KeyEventkeyEvent){
4.//过程代码……
5.returntrue/false;
6.}
1.第1行代码是设置控件的按键事件监听器
2.第3行代码的onKey()函数中的参数
1.第1个参数view表示产生按键事件的界面控件
2.第2个参数keyCode表示按键代码
3.第3个参数keyEvent则包含了事件的详细信息,如按键的重复次数、硬件编码和按键标志等
3.第5行代码是onKey()函数的返回值
1.返回true,阻止事件传递
2.返回false,允许继续传递按键事件
KeyEventDemo是一个说明如何处理按键事件的示例
KeyEventDemo用户界面
最上方的EditText控件是输入字符的区域
中间的CheckBox控件用来控制onKey()函数的返回值
最下方的TextView控件用来显示按键事件的详细信息,包括按键动作、按键代码、按键字符、Unicode编码、重复次数、功能键状态、硬件编码和按键标志
界面的XML文件的代码如下
1.<
EditTextandroid:
id="
@+id/entry"
2.android:
layout_width="
fill_parent"
3.android:
layout_height="
wrap_content"
>
4.<
/EditText>
5.<
CheckBoxandroid:
@+id/block"
6.android:
7.android:
8.android:
text="
返回true,阻止将按键事件传递给界面元素"
>
9.<
/CheckBox>
10.<
TextViewandroid:
@+id/label"
11.android:
12.android:
13.android:
按键事件信息"
14.<
/TextView>
在EditText中,每当任何一个键子按下或抬起时,都会引发按键事件
为了能够使EditText处理按键事件,需要使用setOnKeyListener()函数在代码中设置按键事件监听器,并在onKey()函数添加按键事件的处理过程
4.intmetaState=keyEvent.getMetaState();
5.intunicodeChar=keyEvent.getUnicodeChar();
6.Stringmsg="
"
;
7.msg+="
按键动作:
+String.valueOf(keyEvent.getAction())+"
\n"
8.msg+="
按键代码:
+String.valueOf(keyCode)+"
9.msg+="
按键字符:
+(char)unicodeChar+"
10.msg+="
UNICODE:
+String.valueOf(unicodeChar)+"
11.msg+="
重复次数:
+String.valueOf(keyEvent.getRepeatCount())+"
12.msg+="
功能键状态:
+String.valueOf(metaState)+"
13.msg+="
硬件编码:
+String.valueOf(keyEvent.getScanCode())+"
14.msg+="
按键标志:
+String.valueOf(keyEvent.getFlags())+"
15.labelView.setText(msg);
16.if(checkBox.isChecked())
17.returntrue;
18.else
19.returnfalse;
20.}
1.第4行代码用来获取功能键状态。
功能键包括左Alt键、右Alt键和Shift键,当这三个功能键被按下时,功能键代码metaState值分别为18、34和65;
但没有功能键被按下时,功能键代码metaState值分别为0
21.第5行代码获取了按键的Unicode值,在第9行中,将Unicode转换为字符,显示在TextView中
22.第7行代码获取了按键动作,0表示按下按键,1表示抬起按键。
第7行代码获取按键的重复次数,但按键被长时间按下时,则会产生这个属性值
23.第13行代码获取了按键的硬件编码,不同硬件设备的按键硬件编码都不相同,因此该值一般用于调试
24.第14行获取了按键事件的标志符
6.1Intent
Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息
❑Intent也可称为一个在不同组件之间传递的消息,这个消息在到达接收组件后,接收组件会执行相关的动作
❑Intent为Activity、Service和BroadcastReceiver等组件提供交互能力
❑Intent的用途
⏹启动Activity和Service
⏹在Android系统上发布广播消息
❑广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息
❑在Android系统中,应用程序一般都有多个Activity,Intent可以实现不同Activity之间的切换和数据传递
❑启动Activity方式
⏹显式启动,必须在Intent中指明启动的Activity所在的类
⏹隐式启动,Android系统根据Intent的动作和数据来决定启动哪一个Activity,也就是说在隐式启动时,Intent中只包含需要执行的动作和所包含的数据,而无需指明具体启动哪一个Activity,选择权有Android系统和最终用户来决定
❑显式启动
⏹使用Intent显式启动Activity
⏹创建一个Intent
⏹指定当前的应用程序上下文以及要启动的Activity
⏹把创建好的这个Intent作为参数传递给startActivity()方法
❑Intentintent=newIntent(IntentDemo.this,ActivityToStart.class);
❑startActivity(intent);
⏹IntentDemo示例说明如何使用Intent启动新的Activity
⏹IntentDemo示例包含两个Activity类
❑IntentDemo
❑ActivityToStart
⏹程序启动是默认启动IntentDemo这个Activity
❑隐式启动
⏹优点:
不需要指明需要启动哪一个Activity,而由Android系统来决定,有利于使用第三方组件
⏹隐式启动Activity时,Android系统在应用程序运行时解析Intent,并根据一定的规则对Intent和Activity进行匹配,使Intent上的动作、数据与Activity完全吻合
⏹匹配的Activity可以是应用程序本身的,也可以是Android系统内置的,还可以是第三方应用程序提供的。
因此,这种方式更加强调了Android应用程序中组件的可复用性
⏹在缺省情况下,Android系统会调用内置的Web浏览器
❑Intentintent=newIntent(Intent.ACTION_VIEW,Uri.parse("
));
⏹Intent的动作是Intent.ACTION_VIEW,根据URI的数据类型来匹配动作
⏹数据部分的URI是Web地址,使用Uri.parse(urlString)方法,可以简单的把一个字符串解释成Uri对象
⏹Intent的语法如下
Intentintent=newIntent(Intent.ACTION_VIEW,Uri.parse(urlString));
⏹Intent构造函数的第1个参数是Intent需要执行的动作
⏹第2个参数是URI,表示需要传递的数据
Android系统支持的常见动作字符串常量表
ACTION_ANSWER
打开接听电话的Activity,默认为Android内置的拨号盘界面
ACTION_CALL
打开拨号盘界面并拨打电话,使用Uri中的数字部分作为电话号码
ACTION_DIAL
打开内置拨号盘界面,显示Uri中提供的电话号码
ACTION_EDIT
打开一个Activity,对所提供的数据进行编辑操作
ACTION_VIEW
最常用的动作,对以Uri方式传送的数据,根据Uri协议部分以最佳方式启动相应的Activity进行处理。
对于http:
address将打开浏览器查看;
对于tel:
address将打开拨号呼叫指定的电话号码
ACTION_WEB_SEARCH
打开一个Activity,对提供的数据进行Web搜索
7.1Service简介
❑Service是Android系统的后台服务组件,适用于开发无界面、长时间运行的应用功能
❑特点
⏹没有用户界面
⏹比Activity的优先级高,不会轻易被Android系统终止
⏹即使Service被系统终止,在系统资源恢复后Service也将自动恢复运行状态
⏹用于进程间通信(InterProcessCommunication,IPC),解决两个不同Android应用程序进程之间的调用和通讯问题
⏹Service生命周期
❑Service生命周期包括
⏹onCreate()事件回调函数:
Service的生命周期开始,完成Service的初始化工作
⏹onStart()事件回调函数:
活动生命周期开始,但没有与之对应的“停止”函数,因此可以近似认为活动生命周期也是以onDestroy()标志结束
⏹onDestroy()事件回调函数:
Service的生命周期结束,释放Service所有占用的资源
8.3数据库存储
⏹8.3.1SQLite数据库
❑SQLite是一个开源的嵌入式关系数据库,在2000年由D.RichardHipp发布
❑SQLite数据库特点
⏹更加适用于嵌入式系统,嵌入到使用它的应用程序中
⏹占用非常少,运行高效可靠,可移植性好
⏹提供了零配置(zero-configuration)运行模式