1、第一章第一章初识Android 开发学习目标掌握Android开发环境的搭建掌握Android的程序开发步骤掌握Android模拟器的使用掌握DDMS的使用情景导入 Android因拥有开放性、数据同步性、兼容性等优点从手机操作系统中脱颖而出,成为使用人数最多的手机操作系统,手机应用软件得以迅速发展。本次任务主要实现HelloWorld项目的创建、调试、运行。任务描述【功能描述】创建第一个Android项目HelloWorld在虚拟机上运行项目使用DDMS调试任务技能技能点技能点1 Android概述概述1 Android简介简介 Android 的本意是“机器人”,这个词汇最早出现于法国作家
2、利尔亚当(Auguste Villiers de lIsle-Adam)在1886年发表的科幻小说未来夏娃(Lve future)中,小说中将外表像人的机器起名为Android。Android是一个移动设备软件堆,其包括操作系统、中间件、用户界面和关键应用软件。换言之,Android是基于Java并运行在Linux内核上的轻量级操作系统,其功能覆盖面广泛,包括一系列Google公司在其中内置的应用软件,如打电话、发短信等基本应用功能。一个简单的Android运行界面如图1.3所示。任务技能图 1.3 Android运行界面任务技能2 Android版本版本 自Android首次发布距今,And
3、roid已经出现了相当多的版本,如表1.1所示。任务技能Android 版本发布日期代号1.12009年02月09日Bender(发条机器人)1.52009年04月30日Cupcake(纸杯蛋糕)1.62009年09月15日Donut(炸面圈)2.0/2.12009年10月26日Eclair(长松饼)2.22010年05月20日Froyo(冻酸奶)2.32010年12月06日Gingerbread(姜饼)3.02011年02月03日Honeycmb(蜂巢)4.12012年6月28日Jelly Bean(果冻豆)4.22012年10月30日Jelly Bean(果冻豆)4.32013年7月25日
4、Jelly Bean(果冻豆)4.42013年11月1日KitKat(巧克力棒)5.02014年10月16日Lollipop(棒棒糖)6.02015年05月28日Marshmallow(棉花糖)7.02016年05月18日Nougat(牛轧糖)表1.1 Android 版本列表任务技能 3 Android功能功能Android的功能强大,具体包括以下几个功能:存储:使用SQLite(轻量级的关系数据库)进行数据存储 连接性:支持GSM/EDGE、IDEN、CDMA、EV-DO、UMTS、Bluetooth(包括A2DP和AVRCP)、WIFI、LTE和WiMAX 消息传递:支持SMS和MMS
5、Web浏览器:基于开源的WebKit,并集成Chrome的V8 JavaScript引擎任务技能 媒体支持:支持以下媒体:H.263、H.264(在3GP或MP4容器中)、MPEG-4 SP、AMR、AMR-WB、AAC、HE-AAC(在MP4或3GP容器中)、MP3、MIDI、WAV、IPEG、PNG、GIF和BMP 硬件支持:加速传感器、摄像头、数字式罗盘、接近传感器和全球定位系统 多点触摸:支持多点触摸屏幕 多任务:支持多任务应用 Flash支持:Android 3.0支持Flash 10.1.任务技能4 Android 架构架构 Android操作系统的各个层面如图1.4所示,通过对A
6、ndroid架构的学习,使读者更全面的了解Android系统。任务技能 图 1.4 Android操作系统(0S)的各个层面任务技能从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。应用程序层:该层主要是Android自带的一些应用程序,例如:电话、联系人、浏览器等,还包括从Android Market应用程序商店下载和安装的应用程序。应用程序框架层:该层主要是对程序员开放的Android操作系统的各种功能,以便在应用程序中使用各项功能。系统运行库层:该层主要包含一些C/C+库,这些库能被Android系统中不同的组件使用。Li
7、nux内核层:该层为Android 的内核,包括Android设备的各种硬件组建的底层设备驱动程序。任务技能5 Android 特性特性Android具有如下特性:能够灵活的运用程序框架,支持组件的重用和替换 娱乐功能丰富,包括常见的音频、视频和静态映像文件格式(如MPEG4、MP3、AAC、AMR、JPG、PNG和GIF)优化的图形库,包括定制2D图形库和3D图形库,其中3D图形库基于OpenGL ES 1.0 拥有专门的为移动设备优化的虚拟机-Dalvik任务技能 内部集成浏览器,这个浏览器是基于开源的WebKit引擎 结构化的数据存储使用了SQLite数据库 支持USB、蓝牙、Wi-Fi
8、等多种数据传输(依赖于硬件)支持摄像头、GPS、指南针和加速度器(依赖于硬件)丰富的开发环境,包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成开发环境插件等 支持 GSM、WCDM、LTE等多种移动电话技术任务技能6 Android 优势优势Android和其他编程语言相比,具有以下优势:开放性:主要指基于Android开发的平台允许任何的移动终端厂商加入。支持硬件设施多样性:随着Android开放性的施展,许多硬件厂家会推出各种不同的产品,尽管产品样式不同,功能上也存在着差异和特色,却不会影响到数据同步、甚至软件的兼容。便捷性:Android平台提供给第三方开发商一个十分宽泛
9、、自由的环境,不会受到各种规定的束缚,因此开发商能够发挥自己的创新能力,开发出更多的应用程序。任务技能技能点技能点2 2 开发环境开发环境搭建搭建每门语言的开发都需要相应的开发工具,Android程序的开发软件也是必不可少的,本书采用的开发软件及版本为环境为JDK 1.8以及SDK。1 JDK(Java Development Kit)JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序开发,是搭建Java开发运行环境最基本要素。JDK中包含一些开发所需要的工具的集合。任务技能2 Eclipse Eclipse是跨平台自由集成开发环境(IDE),是一个框架
10、平台。Eclipse本身而言是一个框架和一组服务,可通过插件组件构建开发环境。Eclipse 附带了标准的插件集,其中包括 Java 开发工具(Java Development Tools,JDT)。Eclipse开发界面如图1.5所示。任务技能图1.5 Eclipse开发界面图任务技能3 Android SDK SDK是Software Development Kit的缩写,是软件工程师为所使用的特定的软件包、软件框架、硬件平台、操作系统等建立应用软件开发工具的集合,而Android SDK 指的是Android专属的软件开发工具包。Android SDK不用安装,下载后将SDK压缩包解压即
11、可。任务技能4 ADT ADT(Android Development Tools)是Android为Eclipse所定制的一个插件,这个插件的主要作用是为用户开发Android应用程序时,提供一个强大的综合环境。它拓展了Eclipse的功能,可以让用户快速的建立Android项目,创建应用程序界面,在基于Android框架API的基础上添加组件,以及用SDK工具集调试应用程序,甚至导出签名(或未签名)的APK以便运行应用程序。5 安装步骤安装步骤第一步:安装第一步:安装 JDK(Java Development Kit)首先运行该程序,然后根据提示来选择安装路径,将JDK安装到指定的文件夹即
12、可,一般情况下是使用默认路径,具体步骤如下。(1)首先打开安装界面,如图1.6所示。任务技能任务技能图1.6 JDK安装界面任务技能(2)根据界面提示选择“下一步”,在这里我们选择“开发工具”一项,同时这里也可以选择安装路径,选择下一步,如图1.7所示。图 1.7 JDK 功能选项界面任务技能(3)选择“下一步”,JDK安装成功,如图1.8、1.9所示。图1.8 安装界面 任务技能 图1.9 成功界面 任务技能(4)配置JDK。选择“计算机”“属性”“高级系统设置”“高级”“环境变量”如图1.10所示。图1.10 系统属性界面任务技能(5)选择“系统变量”新建“JAVA_HOME”变量,变量值
13、填写安装的JDK所在的位置路径,如图1.11所示。图1.11 jdk位置路径 任务技能(6)“系统变量”寻找“Path”变量“编辑”,在变量值最后输入:“%JAVA_HOME%bin;%JAVA_HOME%jrebin;”,如图1.12所示。图1.12 系统变量设置(注意:原来注意:原来Path的变量值末尾没有的变量值末尾没有“;”号,号,先输入先输入“;”号再输入上面的内容号再输入上面的内容)任务技能(7)“系统变量”新建“CLASSPATH变量”,变量值填写:“.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar”,如图1.13所示。(注意:变量值开头有点)图1
14、.13 系统变量设置任务技能(8)检测其是否已经配置成功,检测的步骤是:“开始”“运行”命令,在“运行”对话框的文本框中输入“cmd”,在打开的CMD窗口中输入java -version,如果显示如图1.14所示的提示信息,则说JDK明安装成功。(注意:java和-version之间是有空格的)图1.14命令窗口任务技能第二步:安装第二步:安装Eclipse下载Java版本的Eclipse集成开发环境。(1)将下载的Eclipse安装文件解压到硬盘上的某个目录,如图1.15所示。图1.15 解压后的Eclipse目录任务技能(2)Eclipse集成开发环境是无需安装的,在解压并打开Eclips
15、e后,找到用户安装的JDK路径进入解压后的目录。双击可执行文件“eclipse.exe”,运行Eclipse,出现如图1.16所示界面,选择文件工作空间路径,点击确定。图1.16 选择 workspace 的界面任务技能(3)点击“OK”,出现Eclipse操作界面如图1.17所示。图1.17 Eclipse的操作界面任务技能第三步:安装第三步:安装Android SDKAndroid SDK的安装,具体步骤如下:(1)首先将现有的Android SDK开发包解压到某个盘的某个目录下,解压文件后,会得到以下几个重要的文件,但是在这里只选择“SDK Manager.exe”(负责下载和更新SDK
16、包),如图1.18所示。图1.18 解压目录任务技能(2)自动检测是否有更新的SDK数据包可供下载,然后选择所需安装Android 版本,然后点击“Install packages”安装。如图1.19所示。图1.19 安装界面任务技能(3)Android SDK 管理器开始下载并安装所选的包。如图1.20所示。图1.20 安装进程任务技能(4)安装完成后,在 Android SDK 管理器界面上你所选的包在Status中会显示“Installed”,表示已经安装完成,如图1.21所示。图1.21 安装界面任务技能(5)将SDK tools目录的完整路径设置到系统变量中。新建变量名为“SDK_H
17、OME”,在“变量值”文本框输入的 Android SDK的解压目录的路径,如图1.22所示。图 1.22 设置系统变量任务技能(6)找到“PATH”的变量,点击编辑,在“变量值”文本框最前面加上“%SDK_HOME%tools;”,如图1.23所示。图1.23 设置系统变量任务技能(7)设置完成后,检查Android SDK是否已经安装成功,能够正常运行。依次单击“开始”“运行”,然后在运行对话框中输入“cmd”,然后按下回车键,再打开的CMD命令窗口输入“Android-h”,如果显示安装的Android SDK的信息则证明安装成功,如图1.24所示。(注意:Android和-h之间是有空
18、格的)任务技能图1.24 配置信息任务技能第四步:将第四步:将ADT和和Eclipse绑定绑定 Android Development Tools(ADT)是Android为Eclipse 定制的一个插件,该插件为用户提供一个强大的Android应用程序综合开发环境。ADT是对Eclipse IDE的扩展,用来支持Android应用程序的创建和调试。安装ADT有两种方法。(1)在线安装首先运行Eclipse,启动 Eclipse IDE,选择菜单选项“HelpInstall New Software”,出现“Install”界面,点击 Add按钮,如图1.25所示。任务技能图1.25 Inst
19、all对话框任务技能在“name”文本框中输入名字,如:ADT Plugin,注意在“Location”文本框中不能再随意写地址,一定要输入插件的网络地址“https:/dl- Add对话框任务技能第五步:设定第五步:设定Android SDK主目录主目录插件安装后,在Eclipse中设置Android SDK的主目录。(1)启动Eclipse,在菜单中依次单击“Window”“ndow单击DK-ssl命令,如图1.27所示。任务技能图1.27 Eclipse界面任务技能(2)选择“Android”,设定Android SDK所在目录为SDK Location,单击“确定”按钮完成设置。如图1
20、.28所示:图1.28“首选项”对话框任务技能技能点技能点3 Eclipse项目结构项目结构Eclipse项目结构如图1.29所示。1.29 项目结构任务技能1 src主要存放Android项目的源文件,在Android项目里写的Java代码都在该文件下。2 gen目录:自动生成的Java文件,里面有2个文件:(1)BulidConfig.java:文件不需修改,成员变量DEBUG,代表允许调试 (2)R.java:文件同样不需修改,里面定义了许多静态的整型常量,是项目中使用的资源ID。3 Android 4.2.2目录:Android开发过程中使用的API在该目录下jar包中。任务技能4 A
21、ndroid Dependencies目录:为了兼容一些高版本的特性可以在低版本使用,不过需要注意,该jar包的真实位置在libs目录下。5 assets目录:资源文件夹,但是,该文件夹里的资源并不会自动生成资源ID存在R.jar里,里面存放的是大型的资源,比如视频、音乐等。6 bin:是二进制,是存放打包编译后的文件的,不管文件有没有编译都会在这里面。7 libs目录:存放第三方库,自动被导入。任务技能8 res:存放资源的地方,比如图片等较小的资源,有资源ID,存放在R.java中:(1)在res中有三个名为“drawable”的文件夹,是用来存放程序所用的图片的,三个文件夹分别存放三种不
22、同分辨率的图片,分别为“高分辨率”、“低分辨率”、“中分辨率”。(2)在res中还有一个文件夹“layout”,这个文件夹是用来存放界面布局文件的。9 AndroidManifest文件:这个文件在所有的项目中名称都不会变,是一个全局的文件,所有在Android中用到的组件都要在该文件中声明。任务技能技能点技能点4 Android常用开发工具及用法常用开发工具及用法1 模拟器简介及功能模拟器简介及功能 模拟器指在电脑上模拟Android系统,用模拟器来调试并运行开发的Android程序,通过电脑模拟器模拟手机运行环境,即可开发出应用在手机上的软件。如图1.30所示。任务技能图1.30 游戏测试
23、任务技能功能:Android模拟器的功能除了接听和拨打电话外的所有移动设备上的典型功能和行为,并可以提供大量的导航和控制键,让开发人员可以通过鼠标或键盘点击这些按键来为自己的应用程序产生事件。模拟器的屏幕用于显示Android自带应用程序和开发人员自己的应用程序。Android允许开发人员的应用程序通过Android平台服务调用其他程序、访问网络、播放音频和视频、保存和传输数据、通知用户、渲染图像过渡和场景等。模拟器同样具有强大的调试能力,例如它能够记录内核输出的控制台、模拟程序中断(如接受短信或打入电话)、模拟数据通道中的延时效果和遗失等。任务技能2 DDMS调试DDMS(Dalvik De
24、bug Monitor Service)是Android开发环境中的Dalvik虚拟机调试监控服务。在Android系统平台中每一个Android应用都运行在一个Dalvik虚拟机实例里,每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等都是依赖底层操作系统而实现的。因为Android应用的线程都对应一个Linux线程,虚拟机就可以更多的依赖操作系统的一种机制,这种机制叫线程调度和管理机制。而DDMS在IDE与设备或模拟器之间起着调度的作用,所以它启动时会与ADB之间建立一个Device Monitoring Service用于监控设备。当设备断开或链接时,
25、这个Service就会通知DDMS做出相应的反应。任务技能当设备连接调试时,DDSM和ADB之间会建立VM Monitoring Service用于监控虚拟机,并且通过ADB Deamon与虚拟机的debugger建立链接,DDMS便可对虚拟机进行截屏、查看线程、堆的信息、LogCat日志、进程管理、广播状态信息、模拟来电呼叫、短信和虚拟地理坐标等操作。任务技能启动启动DDSM启动DDMS其实有三种方法:第一种:首先选中Eclipse选项栏中的“Window”,然后依次选择“Open Perspective”“DDMS”,点击启动。如图1.31所示:任务技能图1.31 启动DDMS任务技能第二
26、种:安装完成ADT后Eclipse上方的选项栏中,会有一个DDMS视图。如图1.32所示。图 1.32 DDMS的perspective任务技能第三种:点击如图1.33所示图标,选中DDMS选项并双击。如图1.34所示。图 1.33选项栏 图 1.34对话框任务技能下表是“DDMS”启动后界面中的各个调试窗口的作用,如下表1.2所示。任务技能调试窗口描述DevicesDevice窗口罗列模拟器中所有的进程,右上角那一排按钮分别为:调试某个进程、更新某个进程、更新进程堆栈信息、停止某个进程、最后一个图片按妞按下时抓取android目前的屏幕。Threads列出了此进程的所有线程状态running
27、:代码正在执行中sleeping:执行线程睡眠monitor:等待接受监听锁。native:执行native代码vmwait:等待虚拟机zombie:线程在垂死的进程init:线程在初始化starting:线程正在启动utime:执行用户代码的累计时间stime:执行系统代码的累计时间name:线程名字VM Heap当选定一个虚拟机时,VM Heap视图不显示数据,点击右边的“Show heap updates”按钮,然后点击“Cause GC”实施垃圾回收更新堆的状态。Allocation Tracker在这个视图里,可以跟踪每个选中的虚拟机的内存分配情况。点击“Start Tracking
28、”后点击“Get Allocations”就可以看到。E m u l a t o r Control模拟一些设备状态和行为。Telephony Status:改变电话语音和数据方案的状态,模拟不同的网络速度。TelePhony Actions:发送模拟电话呼叫和短信到模拟器。Location Controls:发送虚拟的定位数据到模拟器,可执行定位之类的操作。3 JUnit测试测试(1)JUnit主要功能主要功能Android测试框架如图1.35所示,它基于JUnit,并使用JUnit 来测试一些与Android平台相关的类,或者使用Android的JUint 扩展来测试Android组件An
29、droid JUint 扩展提供了对Android特定组件(如Activity,Service)的测试支持,这些扩展类提供了一些辅助方法来帮助创建测试使用的类或方法任务技能图1.35 Android测试框架任务技能(2)JUnit的好处的好处可以使测试代码与产品代码分开。有利于代码的打包和测试代码管理针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试,JUnit提供了一个便携测试类的框架,使测试代码的编写更加方便易于集成到测试人员的构建过程中,JUnit和Ant的结合可以实施增量开发JUnit是公开源代码的,可以进行二次开发JUnit具有很强的扩展性,可以方便地对JUnit进行扩展
30、任务技能(3)JUnit单元测试编写原则单元测试编写原则简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写使测试单元保持持久性可以利用既有的测试来编写相关的测试(4)JUnit的特征的特征使用断言方法判断期望值和实际值差异,返回Boolean值测试驱动设备使用共同的初始化变量或者实例测试包结构便于组织和集成运行支持图型交互模式和文本交互模式任务技能任务技能4 ADB ADB的全称为Android Debug Bridge,位于Android SDK安装目录的“platform-tools”子目录下,利用 ADB工具的前提是在手机上打开USB调试,然后通过数据线连接电脑,在电脑上使用
31、命令模式来操作手机,可进行重启、进入Recovery、进入Fastboot、推送文件等功能的操作。技能点技能点5 Eclipse快捷键快捷键在开发的时候,使用快捷键会更快更准确的编写程序,部分快捷键及其用法如表1.3所示。任务技能快捷键快捷键快捷键功能快捷键功能Ctrl+1快速修复Ctrl+D删除当前行Ctrl+Alt+复制当前行到下一行Ctrl+Alt+复制当前行到上一行Alt+当前行和下面一行交互位置Alt+当前行和上面一行交互位置Alt+前一个编辑的页面Alt+下一个编辑的页面(Alt+Enter显示当前选择资源的属性Shift+Enter在当前行的下一行插入空行Shift+Ctrl+E
32、nter在当前行插入空行Ctrl+Q定位到最后编辑的地方Ctrl+M最大化当前的Edit或ViewCtrl+/注释当前行,再按则取消注释Ctrl+T快速显示当前类的继承结构Ctrl+O快速显示 OutLineCtrl+L定位在某行Ctrl+W关闭当前EditerCtrl+K参照选中的Word快速定位到下一个Ctrl+E快速显示当前Editer的下拉列表Ctrl+/(小键盘小键盘)折叠当前类中的所有代码Ctrl+(小键盘小键盘)展开当前类中的所有代码Ctrl+Space完成一些代码的插入Ctrl+Shift+E显示管理当前打开的所有的View的管理器Ctrl+Shift+F4关闭所有打开的Edi
33、terCtrl+Shift+F格式化当前代码Alt+Shift+R重命名Alt+Shift+M抽取本地变量Alt+Z撤销当前的操作Alt+Shift+C修改函数结构表1.3 快捷键任务实施第一步:打开Eclipse,新建一个工程文件第二步:应用程序名称与工程名称为“HelloWorld”,包名自动生成,选择SDK的版本,即程序最低支持的Android版本第三步:创建登录图标(launcher icon)和activity。默认选中,选择工作空间(Workspace)任务实施第四步:选择应用程序的图标样式,可选择默认第五步:点击“Finish”,完成创建,创建完成项目之后Eclipse自动生成代
34、码。第六步:出现该图标的时,证明环境已搭建完成,单击左上方的第二个机器人。第七步:在AVD name-“HelloWorld”根据自己的项目设定名称,根据自己的需要可以自行分配内存卡大小任务实施第八步:选中创建的模拟器,单击“Start”选项第九步:选择“Launch”,启动模拟器第十步:选中 HelloWorld文件右击,依次选择:“Run As”“Android application”,等待模拟器运行,得到最后的结果第十一步:选择“Window”“Open Perspective”“DDMS”,启动“DDMS”任务总结本项目介绍了Android手机平台的基础知识,重点讲解如何搭建和使用A
35、ndroid系统平台。通过对本项目的学习可以清楚的了解Android开发的基本概念,掌握Eclipse的特点、环境的搭建和程序运行的基本流程,提高对Android开发的认知度。英语角system 系统manager 处理者 project 项目 logo 标志Android 安卓font 文字install 设置window 窗口tool 工具finish 结束项目二项目二Android 应用界面设计应用界面设计学习目标了解视图与View组件掌握Android 应用界面的设计布局技术掌握Dialog组件相关的知识和技能情景导入Android市场不断拓展,用户对Android界面设计的要求也越来
36、越高,希望有一个美观、整洁、实用的界面,因此Android提供了一些常用控件来实现界面的设计。本次任务主要是设计应用界面。任务描述【功能描述】使用线性布局技术来设计应用界面主界面布局使用FragmentTabHost实现三个界面切换挑选界面控件栏中控件,使用线性布局设计第一个界面使用常用布局设计第二个界面在第三个界面实现对话框功能任务技能技能点1 控件属性介绍各个控件的继承关系如图2.9所示,了解各个控件的继承关系对之后项目的内容理解有很大的帮助。任务技能1 文本框与编辑框TextView继承了View,是EditView的父类,TextView是一个文本编辑器但Android关闭了它的编辑功
37、能。开发一个可编辑的文本框可使用它的子类EditView,EditView是允许用户编辑的文本框。EditText与TextView共用大部分XML属性和方法,二者之间的区别为EditText可接受用户输入信息,文本框与编辑框属性及描述如表2.1所示。属性描述android:layout_width设置组件的宽度android:layout_height设置组件的高度android:id给组件定义一个id值,供后期使用android:background设置组件的背景颜色或背景图片android:text设置组件的显示文字android:textColor设置组件的显示文字的颜色android
38、:layout_below组件在参考组件的下面android:alignTop同指定组件的顶平行android:maxLength=限制输入字数android:digits=限制输入数字和大写小写字母android:password=true可以让EditText显示的内容自动为星号。android:numeric=true让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入android:capitalize=cwj1987仅允许接受输入cwj1987,一般用于密码验证android:textColor显示文本颜色android:textColorHighlight被选中文字的底色,默认
39、为蓝色android:textSize设置文字大小,推荐度量单位”sp”,如”15sp”表2.1 文本框与编辑框属性及描述任务技能任务技能2 Button组件组件Button继承了TextView,可供用户点击,点击的时候时会触发onClick事件(点击事件)。按钮使用简单,可设置Button的背景以及文字等属性,如果背景为不规则图片则能够开发出不同规则形状的按钮,Button的属性设置方法及描述如表2.2所示。方法描述setClickable(boolean clickable)clickable=true:允许点击clickable=false:禁止点击setBackgroundResou
40、rce(int resid)通过资源文件设置背景色resid:资源xml文件IDsetText(CharSequence text)设置按钮显示文字setTextColor(int color)设置按钮显示文字的颜色color可以使用系统Color常量 setOnClickListener(OnClickListener l)设置按钮点击事件表2.2 Button属性设置方法及描述任务技能任务技能3 状态开关状态开关ToggleButton按钮是由Button派生出来的,所以Button的所有属性、方法也同样可以用于ToggleButton。它的作用一般是切换程序中的某种状态,ToggleBu
41、tton属性设置方法及描述如表2.3所示。4 ImageView及其子类ImageView继承自View组件,它的功能就是显示图片,只要是Drawable对象,就可使用ImageView来显示它。任务技能任务技能5 列表视图与网格视图列表视图与网格视图ListView是手机系统中使用非常广泛的一种组件,它继承自LinearLayout布局,以垂直(vertical)列表的形式显示所有列表项,LinearLayout布局会再技能点二中进行讲解,生成列表视图有如下两种方式。直接使用ListView进行创建让Activity继承ListActivity GridView与ListView相似性十分的
42、高,都是列表项,但是ListView只可以显示一列,而GirdView可显示多列。ListView与GridView都会使用到适配器,常用适配器如表2.5所示。任务技能任务技能技能点技能点2 基本布局基本布局不同型号的手机分辨,尺寸不完全相同,如何让程序手动控制每个组件的大小位置,会给编程带了很大的困难。为了让不同组件在不同的手机屏幕上都能运行良好,Android提供了布局管理器,可以根据运行平台调整组件的大小,程序员选择合适的布局管理器。在Android系统中提供了五种基本的布局方式,通过这五种布局方式,能够实现大多数复杂界面的设计,继承关系如图2.14所示。任务技能2.14 布局继承关系图
43、任务技能1 线性布局线性布局(LinearLayout)线性布局是将控件排放在水平方向或者垂直方向的一条线上。在线性布局中还有一些比较常用的属性与设置方法,如表2.6所示。任务技能XML属性对应设置方法描述android:orientationsetOrientation(int)控制排列方式的属性horizontal(水平排列)、vertical(垂直、默认值)android:gravitysetGravity(int)设置组件的对齐方式,该属性的值有 top、botton、left、right、center_vertical、fill_horizontal、center、fill、clip
44、_vertical、clip_horizontal。也,可同时使用多种对齐方式,让其组合在一起。android:dividersetDividerDrawable(Drawable)设置垂直布局时两个按钮之间的分隔线android:baselineAlignedsetBaselineAligned(boolean)boolean=false,就会阻止该布局与他的子元素的基线对齐;boolean=true则可以android:measureWithlargestChildsetMeasureWithLargestChildEnabled(boolean)boolean=true,带权重的子元素都
45、会被设置为有最大子元素的最小尺寸任务技能2 相对布局相对布局(RelativeLayout)相对布局是按照控件间的相对位置进行布局,可以选择某个控件作为参照,其它的控件可以在它的任意方向,例如“android:layout_below”属性指在某个控件的下面。RelativeLayout的重要属性如表2.7所示。任务技能任务技能3 表格布局表格布局(TableLayout)表格布局其与平时使用的Excel表格类似,都是将子元素的位置设置到具体的行或列中。一个TableLayout是由许多的TableRow组成的,一个TableRow就相当于TableLayout中的一行,TableRow是 L
46、inearLayout的一个子类,它的某些属性是一直不变的,比如说排列方式属性值恒为horizontal,它的android:layout_width和android:layout_height属性值恒为match_parent和wrap_content。因此其子元素都是横向排列并且宽高一致的。因为这些系统已经设定这样的属性使得每个TableRow中的子元素都可以认为是表格中的单元格。在TableLayout里,单元格可以为空,但注意不能跨行。任务技能表格布局管理器中,可为单元格设置如下三种行为方式。Shrinkable:如果某列被设为Shrinkable,则该列所有单元格宽度可被变大或者变小
47、,这样将列设置Shrinkable就可以让表格适应父容器的宽度。Stretchable:如果某列被设为Stretchable,那么该列的所有单元格宽度可被拉长或者拉短,这样就能保证组件能填满表格的剩余空间。Collapsed:如果某列被设为Collapsed,那么该列的所有单元格都不显示了。任务技能4 帧布局帧布局(FrameLayout)FrameLayout是五大布局中最简单的一种布局,在该布局中,整个界面被当成一块空白的没有任何组件的区域,所有的子元素都不能被指定放置的位置,这一点是其它布局的最大差别,所有的子组件系统会被默认放于这块区域的左上角,并且后面的子元素直接覆盖前面的子元素之上
48、,将前面的子元素部分或全部遮挡。例如在画板上刷颜料,刷一层就会将原本位置的颜色覆盖。任务技能5 绝对布局绝对布局(AbsoluteLayout)相较于其他的几种布局,绝对布局是很好理解的一种布局,平时在生活中,我们的家具都是一般摆放在一个固定位置的,以房子的一个角作为坐标原点,然后这个位置就可以用X,Y来表示。绝对布局中通过android:layout_x和android:layout_y来指定其子元素的准确的坐标位置。当使用AbsoluteLayout作为布局容器是,布局容器不再管理子组件的位置,大小这些需要程序员自行控制。任务技能技能点技能点3 Dialog1 Dialog介绍介绍Dial
49、og是Android开发过程中最常用到的组件之一,它可以用来弹出一个窗体,这个窗体的内容大多用来提示或警告用户,Dialog对话框可以分为5大类,分别是警告对话框(AlertDialog)、进度对话框(ProgressDialog)、日期选择对话框(DatePickerDialog)、时间选择对话框(TimePickerDialog)、自定义对话框(从Dialog继承)。任务技能Dialog的创建方式有两种:第一种是new一个Dialog对象,调用Dialog对象的show()和dismiss()方法控制对话框的显示和隐藏。第二种在Activity的onCreateDialog(int id)
50、方法中 创建Dialog对象并返回,调用Activty的showDialog(int id)和dismissDialog(int id)来显示和隐藏对话框。区别在于通过第二种方式创建的对话框会继承Activity的属性,如获得Activity的menu事件等。任务技能AlertDialog的构造方法都是Protected(有保护的),不能直接新建AlertDialog,要使用AlertDialog.Bulider中的create()方法来创建一个弹窗窗口。想要使用AlertDialog.Bulider创建对话框需要掌握以下几个方法,如表2.8所示。任务技能任务实施第一步:在Eclipse中创建