Android基础与应用开发教程完整版课件全套ppt教程.pptx
-
资源ID:72346618
资源大小:10.02MB
全文页数:244页
- 资源格式: PPTX
下载积分:19金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
Android基础与应用开发教程完整版课件全套ppt教程.pptx
Android基础与应用开发教程Android概述第一章2003年Android高科技股份有限公司在美国加州成立2005年被世界著名的Internet引擎公司Google收购2007年11月,Google与其他33家公司宣布成立开放手机联盟(OHA)2010年末,Android(安卓)操作系统超越称霸十年的诺基亚Symbian(塞班)系统,跃居为全球最受欢迎的智能手机平台。1.1 Android发展概况总之,经过多方努力,Google的Android现已形成一个完整的开放式生态系统,它有3个组成部分:(1)Android开源工程(Open Source Project:包含系统的全部源代码,供开发移动电话系统使用;(2)Android开发者(Developer):包含应用层接口和开发参考文档,供开发应用系统使用;(3)Android市场(Market):系Google为Android程序提供交易的场所,开发者可上传自己的程序,使用者可在市场上下载这些程序。1.1 Android发展概况显然Android从一开始就面临着巨大的挑战。在此情况下,Google采取了一系列措施来增强自己的竞争优势,其核心就是开源和免费。具体地说,Google公开自己开发的Android SDK软件包,让第三方开源社群的开发者开发出数量众多的Android应用程序;Google与最有影响力的龙头公司结成联盟扩大Android软硬件研发队伍;采用ASL开放源码版权;建立免费的Android Market集散市场;举办开发者有奖挑战大赛活动,等等。下面我们将分别简要说明Google这些措施的具体实施情况。1.2 Android面临的挑战正是“免费”与“开放”这两个关键字,免费保证了全球的移动电话制造商可免费地随意安装Android操作系统,这样可降低15%一20%的手机制造成本。开放是指除开源Linux作为操作系统内核外,还开放内核的开发工具,让最上层的应用程序开发者可以在统一开放的平台上开发程序,而不必理会这些程序会用在哪种手持装置上。只要采用Android操作系统,程序内容就不受硬件的限制、都是可移植的。免费与开放同时也意味着将来用户有更多机会选择更开放的环境,也表示手机用户拥有更多的决定权。当硬件的界限打破后,可以想象手机也会像个人计算机那样由用户自行决定需要哪些软件功能,可以自行安装和移除功能,完全不需要无奈地接受手机制造商的默认系统软件设置与环境,用户可依据个人需求定制自己手机的内容。1.3 开放性与免费问题1.3 开放性与免费问题开放手机联盟(Open Handset Alliance,OHA)就是手机和技术领导者联合组成的一个群体,他们希望分享这个改变着消费者移动体验的愿景,目的是加速手机的创新和尝试,为消费者提供更丰富、更便宜和更好的手机体验。OHA的每个成员都坚定地致力于实现移动生态系统更大的开放性,致力于商业部署和服务于使用Android平台的手机。开放手机联盟体现了移动生态系统的各个部分。其中的成员包括移动运营商(13家)、手机制造商(22家)、半导体公司(20家)、软件公司(17家)和商业化公司(12家)。1.4 开放式手机联盟 联盟的主旨是将Android作为一种开放的平台,这对于给消费者来说,将会让他们得到更便宜更新颖的移动设备和服务,会给消费者带来更耐看更易使用的用户界面和更丰富的应用组合;对于移动运营商来说,将会具有完全的灵活性来定制和区别对待他们的产品系列,并降低手机的整体成本。此外,他们也将能够更迅速地领会手机和服务方面的创新;对于手机制造商来说,他们将受益于降低BOM软件的成本和缩短手机上市时间。此外,他们将会有更大的灵活性定制和区别对待他们的产品供应;而对于半导体公司来说,需要了解利用这些解决方案来增强功能的复杂软件,好让未来的处理器能够包含更多内核和访问共享外设,如三维图形、信号处理器和专用多媒体加速模块等,让手机芯片变得更贴近实际需要。1.4 开放式手机联盟Android市场(Google Play,原名为Android MarketOS是Google为了让Android开发人员将应用程序上载销售的集散网站,而T-Mobile G1手机的用户,则可以到Google Play网站下载自己所需的应用程序到手机上使用。Google创造的这个网站不用Android Store名称是因为Store是商店,暗含店中所有商品必须花钱获取;而Play(或Market)则有比赛、才智运用和消遣之意,开发者在此网站上上载或下载与他有关的程序,还可决定Android用户下载时是否收费。1.6 Android市场1.使用APK Downloader下载APK Downloader是Google浏览器Chrome的一个插件,且它必须在Chrome 17或更高版本上使用。2.使用Real APK Leecher下载应用程序Real APK Leecher是一个独立的应用程序,其设置方法与Downloader同,插件基本相同,但这个软件的当前版本不如Downloader好用,操作起来不尽如人意,故建议使用Downloader插件。1.6 Android市场1.6.1 从Google Play下载应用程序上传应用程序可遵照Google所给的发行准备操作步骤进行操作,准备工作共分16步。它们是:了解分发流程;了解Google Play的政策;确定应用程序内容评级;确定分发的国家;确认应用程序的整体规模;确认应用程序平台和屏幕兼容范围;决定应用程序是免费或给出定价;考虑应用程序部分代码的计价;设定应用程序的价格;执行本地化工作;准备高质量促销图片;组建和上传发行准备版APK;完成产品的详细信息;在促销活动中使用Google Play徽标和链接;最后的检查和发行;发行后对用户的服务。1.6 Android市场1.6.2 上传应用程序到Google Play本章简要地介绍了Android的发展过程,以及Google围绕着它的发展所采取的一系列措施,其中包括建立开放手机联盟、实施源代码完全开放与免费使用、采用ASL版权、建立Android市场、举办开发者挑战大赛等。在OHA成员和Google的不断努力下,现在已经形成了一个完整的Android生态系统,使得Android取得了空前的大发展。1.8 本章小结感谢观看Android基础与应用开发教程大连理工大学出版社Android应用程序开发基础第2章2.1 Android软件开发概述2.1 Android软件开发概述第1层:Linux内核(Linux Kernal)层,由操纵移动设备硬件的Linux内核程序组成。其中包含的驱动程序有:l进程/线程间调用(Binder IPC)管理l闪存(Flash Memory)管理l音频、视频、显示器(Display)管理l摄像机(Camera)管理l无线网络协议栈(WiFi)和电源管理l小键盘(Keypad)管理2.1 Android软件开发概述第2层:函数库与系统运行库(Libraries/Android Runtime)层。函数库(Libraries)由开源代码函数组成,其中包括l标准C函数库(Libc)、l安全套接层函数库(OpenSSL)、l数据库(SQLite)、l网页函数库(WebKit,负责Android网页浏览器的运行)、l字体光栅化引擎库(FreeType,将字符栅格化并映射成位图和支持其他字体)、l界面管理器(Surface Manager,控制显示系统访问并支持平面和立体图像),l2D图形库(Skia Graphics Library,SGL),l3D图形与多媒体函数库(OpenGL/ES和Media)2.1 Android软件开发概述第3层:应用架构(Application Frameworks)层,是应用程序架构API的集合,其主要目的是让应用程序开发者便于利用其中常用的例行程序进行架构设计,以便快速开发Android应用程序。常见的API包括:lView System(视窗系统,如制作列表list、表格grid、文本框、按钮等)lResource Manager(资源管理器,提供字符串、图形和布局文件等非代码资源的访问)lContent Provider(内容提供者,让应用程序共享和互访彼此的数据)lNotification Manager(通知管理器,让应用程序在状态栏中显示自定义的提示信息)l Activity Manager(活动管理器,管理应用程序生命周期和浏览器导航回退等)lWindow Manager(窗口管理器)lTelephone Manager(电话管理器)lPackage Manager(包管理器)lLocation Manager(位置管理器)2.1 Android软件开发概述第4层:应用(Applications)层,是Java语言编写的应用程序。Android手机中预装了若干应用程序,它们可高速地运行在Dalvik虚拟机上,如电话拨号、日历、地图、浏览器、通讯录、SMS短信)、E-Mail客户端、游戏等。此外,还可编写自己的应用程序或从Android市场(Android Market上下载应用程序,将它安装在自己的手机上使用。2.2 Android SDK2.2 Android SDK2.2.2 Android模拟器Android SDK除底层的Linux内核外,最重要的工具就是Android模拟器(AVD)。Android模拟器所模拟的处理器是一种32位的高级RISC机器(Advanced RISC Machine,ARMy ARM在手机和其他嵌人式设备中广泛使用的原因是它对电源要求较低,例如,iPod,Nimtendo DS和掌上游戏机都运行在只有3万只晶体管的ARM4上,而奔腾系列CPU的晶体管数量高达320万只。所有Android应用程序的开发并不需要在真实的手机上进行,使用AVD就能够完成应用程序代码的调试、运行和测试,以及SD存储卡的添加。除USB接口、照相机、视频捕捉、耳机、电池模拟和蓝牙等功能外,90%的应用程序开发都可以在手机模拟器上完成。2.2 Android SDK2.2.4 Android排错工具为了便于程序调试Android SDK除了提供模拟器之外,还提供了一个排错工具android调试桥(adb)。程序开发过程中难免出现这样或那样的错误,调试(Debug或称为“排错”)工具是必不可少的。Android的adb除提供程序编码排错外,还可以连接到个叹计算机与Android模拟器。2.2 Android SDK2.2.5 Android SDK API2.3 Android 与 Eclipse2.3.1 Android 开发工具 ADT在Eclipse中安装了ADT后,就可获得完善的IDE功能和捆绑在ADT中的Android特有的功能。Eclipse和ADT的重要特征为:(1)集成了Android工程的创建、组建、打包、安装和调试功能:ADT向Eclipse中集成了许多开发工作流任务,很容易让使用者迅速开发和测试他所开发的Android应用程序。(2)SDK工具集成:许多SDK工具都集成到了Eclipse的菜单和透视图中,或成了ADT所运行的后台进程的一部分。(3)Java编程语言和XML编辑器:Java编程语言编辑器包含常见的IDE功能,如编译时语法检查、代码自动补足。ADT还提供了自定义XML的编辑器,可以用UI形式来编辑Android特有的XML文件。它的图形化布局编辑器允许使用拖放方式设计用户界面。(4)集成了Android架构API的综合文件:可以将鼠标悬停在类、方法或变量上来访问文档。2.4 Android 的其他开发工具1.Android开放辅助开工具库(Open Accessory Development Kit)2.Android App Inventor(应用程序发明家)3.HyperNext Android创建器4.Simple规划5.Basic4android2.5 Android 程序的基本组成部分2.5.1 Android 应用程序的基本组件01活动活动(Activity)是android.app包内的一个类,它是显示用户界面(或窗口)的应用程序组件,用户可以与它交互来做一些操作,如拨打电话、拍照、发送电子邮件或查看地图等。通常用户界面填满整个屏幕,但可能小于屏幕或浮动在屏幕上另一窗口的上方。应用程序通常由多个彼此松散地关联的活动组成。2.5 Android 程序的基本组成部分2.5.1 Android 应用程序的基本组件02服务服务(Service)也android,app包内的一个类,它是应用程序的另一个组件,它没有用户界面且可长期在后台运行。服务基本上有两种形式:启动:应用程序组件(如活动)调用StartService()时,服务即告启动,然后便在后台无限期地运行,即使启动它的组件已销毁。关联(或绑定):应用程序组件调用bindService)关联到某服务时,该服务就被绑定了。2.5 Android 程序的基本组成部分2.5.1 Android 应用程序的基本组件03意图 应用程序三个核心组件(活动、服务和广播接收者)都是通过意图(Intent的消息激活的。意图是android.content包内的一个类,意图的消息是它与应用程序组件之间绑定的手段。意图可执行的任务有广播消息、启动服务、发起活动、显示Web页面或内容列表,以及发起和回答电话呼叫等。意图是Intent对象,它是抽象描述所执行操作的被动式数据结构;在广播情时它经常是某事已经发生或公布某件事的描述。2.5 Android 程序的基本组成部分2.5.1 Android 应用程序的基本组件03意图 意图分为两类:显式意图,用名字指定其目标组件。由于开发人员一般不知道组件名称,所以显式意图多用于应用程序内部的消息,如启动从属服务的活动或启动姊妹活动等。隐式意图,未指名目标组件(空白组件名称),意图对象经常用它激活其他应用程序中最佳适配的组件。2.5 Android 程序的基本组成部分2.5.1 Android 应用程序的基本组件04视图 视图(View)是android.view包内的一个类,它是用户界面(UI)中基本组成块。视图分层次且会绘制(显示)自己。它是窗体小部件的基类,占据屏幕上一个矩形区域,并负责绘图和处理用户交互事件,它可以是按钮、标签、文本字段或其他UI元素。2.5 Android 程序的基本组成部分2.5.1 Android 应用程序的基本组件05视图 内容提供者(ContentProvider)是android,content包内的一个类,它管理结构化数据集的存取。它可封装数据,并提供数据安全性的定义机制。内容提供者是把一个进程中的数据连接到另一进程中运行的标准接口。2.5 Android 程序的基本组成部分2.5.1 Android 应用程序的基本组件06广播接收者 广播接收者(BroadcastReceiver)是android.content包内的一个类,它是响应全系统内广播通知的组件。许多广播起源于系统,例如广播通知屏幕已关闭、电池容量过低或捕获图片等。应用程序也可以启动广播,例如通知其他应用程序数据已下载到设备上可供使用。广播接收者不显示用户界面,但它可创建一个状态栏提示用户有广播事件发生。更普遍的是广播接收者只是通往其他组件的“通道”,只做非常少量的工作。2.5 Android 程序的基本组成部分2.5.2 Android应用程序的资源 一个Android应用程序不仅由源代码组成,它还需要与源代码分开的一些资源,诸如字符串、图片、图像、动画文件、音视频文件,以及有关应用程序的视觉显示有关的数据资源。它可能还需要定义菜单、样式、颜色、活动的用户界面布局XML文件。定义应用程序资源有两种方法:使用程序代码和使用XML文件。前者是Java使用的方法,而Android能够同时使用这两种方法,但主要是使用XML文件。XML文件能够让应用程序更新变得非常容易,无需修改代码。2.5 Android 程序的基本组成部分2.5.3 程序集文件AndroidManifest,xml AndroidManifest,xml是整个应用程序的配置文件,它定义了整个应用程序的内容和行为。Android系统每启动一个应用程序组件,必须读取该这个AndroidManifest.xml文件才能知道该组件是否存在。因此,应用程序必须在这个文件内声明它所用的全部组件。AndroidManifest.xml文件必须保存在应用程序工程的根目录内。2.6 本章小结本章内较详细地介绍了Android平台的系统结构、各部分的组成部件和主要的功能,以及在该平台可开发的软件种类。本章还较详细地介绍了Android SDK现有的版本,以及其中重要的组成部分:Linux系统内核、AVD,DVM、调试工具和API中重要的主要包(Package)的类型。特别是本章所介绍的Eclipse和其插件ADT的下载与安装方法。掌握这些知识和具体操作对于学习设计和调试Android应用程序都具有重要的实际意义。感谢观看Android基础与应用开发教程大连理工大学出版社Android基本应用程序第3章3.1 设置Android工作环境3.1.1 JDK和Eclipse的下载与安装Android应用程序是用Java语言编写的,因此第一个要安装的软件是JDK。Android SDK要求JZSE的JDK 5(即JDK 1.5)或更高版本,现在Oracle提供J2SE JDK 6或JDK 7版(即JDK 1.6或JDK 1.7),建议下载和安装JDK 6。下载完后,可以先安装它并将JAVA_ HOME环境变量设置为JDK的安装文件夹。在Windows XP情况下,可以右击“我的电脑”,选取“属性”的“高级”选项卡,单击“环境变量”。单击【新建】按钮添加新环境变量(如果它已经存在,则用“编辑”修改它)。JAVA_HOME的值通常是C:Program FilesJava jdkl.6.0_16,可将它更改为JDK实际安装目录。对于Windows Vista和Windows 7,则右击“计算机”选取“属性”,单击“高级系统设置”链接,再单击“环境变量”。然后,采用同样的操作。对于Mac OS X,需在HOME目录内的.profile文件中按下述方式设置JAVA_HOME变量:export JAVA_HOME=path_to_ JDK_directory3.1 设置Android工作环境如2.2节所述,Android SDK是开发和运行Android应用程的基本软件。其中包括Android API和Android模拟器。Android SDK安装比JDK略显复杂些,首先需要下载Android SDK Tools 称为Android SDK starter,即启动器,它并未包含SDK的全部内容),然后可将这个软件包安装在androidandroid-sdk文件夹内。安装完毕后,启动其中的 SDK Manager(管理器),在该管理器的窗口中选取所需安装的SDK版本(可勾选多种版本)和相关的工具,同时勾选show:Upadates/New和Installed,以及Sortedby:API Level,然后单击Install n packages按钮就会开始下载和安装所选中的文件。注意,此时必须保持网络连接顺畅。我们推荐下载并安装Windows Android SDK 2.x版本。对于Mac OS X和Linux,可将它解压到Home目录内。3.1.2 下载安装Android SDK和ADT开发工具3.2 Hello World程序(1)启动Eclipse并选择File|New|Project。在“New Android Project对话框内选择“Android 1.6,然后单击Next按钮。3.2 Hello World程序3.2 Hello World程序3.2 Hello World程序3.2 Hello World程序3.3 Android应用程序的结构3.4 NotePad应用程序3.4.1 加在和运行NotePad应用程序为了执行这个Notepad应用程序,首先启动Eclipse IDE,然后遵照下列步骤把Notepad示例加载到该IDE内:(1)选择File|New|Project;(2)在“New Project对话框内选择Android|Android Project;(3)在“Android Project”对话框内,先输人工程名(如NotesList),再选择“Createproject from existing source(从已有的源创建工程),并设置“Location,字段为Notepad程序的路径(在Android安装目录的samples文件夹内)。然后,单击Finish按钮,就可将已有的Notepad程序加载到Eclipse IDE内。要运行Notepad程序,选择Run|Run As|Android Application即可。3.4 NotePad应用程序3.4.2 NotePad应用程序3.4 NotePad应用程序3.4.2 NotePad应用程序3.4 NotePad应用程序3.4.2 NotePad应用程序为了执行这个Notepad应用程序,首先启动Eclipse IDE,然后遵照下列步骤把Notepad示例加载到该IDE内:(1)选择File|New|Project;(2)在“New Project对话框内选择Android|Android Project;(3)在“Android Project”对话框内,先输人工程名(如NotesList),再选择“Createproject from existing source(从已有的源创建工程),并设置“Location,字段为Notepad程序的路径(在Android安装目录的samples文件夹内)。然后,单击Finish按钮,就可将已有的Notepad程序加载到Eclipse IDE内。要运行Notepad程序,选择Run|Run As|Android Application即可。3.5 应用程序的生命周期法管理活动(Activity)的生命周期,对于开发强大灵活的应用程序至关重要。一个活动基本上存在着三种状态:(1)活跃(运行)态:活动处于屏幕前台(在栈顶)并具有用户焦点。(2)暂停态:活动失去焦点但仍可见。也就是说,有一个非满屏显示或透明的新活动在其上部可见。暂停的活动完全是“活着的”(其对象仍在堆栈中,持有完整的状态和成员信息,并保持对窗口管理器的连接),但在极低内存的情况下,可以被系统“杀死”。(3)终止态:活动完全由另一活动遮盖。它仍保持状态和成员信息,但没有连接到窗口管理器上,且用户已经看不见它,其窗口是隐藏的。当其他地方需要内存时系统可以“杀死”它。3.5 应用程序的生命周期3.6 应用程序调试在整个Android应用程序开发过程中可用的调试工具之一是分类日志LogCat,它可有选择地显示由android.util.Log类、异常和System,out,println()方法等发出的日志消息。当System.out.println到此我们完成了有关内容提供者的全部讨论。5.2 Android意图(Intent)Android的意图(Intent)概念包含很多的创意。意图可从在一个应用程序中激活另一个应用程序、激活内部或外部的组件、引发事件让其他意图用类似于出版一订阅方式进行响应,也可以用意图来表示行动(Action)。从根本上说,意图是让Android激活某个行动,且所激活的所行动取决于它所注册的内容。譬如我们创建了这样一个活动:5.2 Android意图(Intent)5.2.1 意图类在Android内打包了许多预制应用程序和激活它们的意图对象(Intent),运行这些程序能够对意图进行测试。这些应用程序(对不同SDK版本所有区别)是:1)浏览器应用程序:打开浏览器窗口;2)电话呼叫应用程序:可呼叫某电话号;3)电话拨号应用程序:它显示一个电话拨号盘,用户可用它输人电话号并通过UI进行呼叫;4)绘图应用程序:它显示给定经纬度坐标的世界地图;5)详细地图应用程序:它显示出Google的街景视图。5.2 Android意图(Intent)5.2.2 意图和URI我们首先从最简单的意图开始,其中要做的所有事情就是给行动起一个名字。代码5-13中的ACTION_ DIAL活动就是行动名(或意图常数)之一。因此,要激活电话拨号盘,所需要的全部东西只是拨号盘的行动而已,再不需要别的东西。呼叫给定电话号的ACTION_ CALL意图则有所不同,它需要使用称为Data的参数。这个参数指向一个URI,而该URI又指向给定电话号。意图的行动部分是一个字符串或一个串常数,该常数通常用Java包名作前缀;而数据部分总是表示URI的字符串。而该URI的格式对于行动激活的每个活动都是专有的。譬如,CALL行动决定应当使用哪种URI数据,并从该URI提取电话号。5.2 Android意图(Intent)5.2.3 意图和额外信息除去行动和数据等主要属性之外,意图(Intent)还可以包含附加属性extra(即额外部分)。extra可给接收意图的组件提供更多的信息。extra数据的形式为“关键字/值”(key/value)对。关键字的名字应以包名开始,而值的名字可以是基本数据类型或名字与所实现的android,os.Parcelable接口一样长的对象。这个extra信息用Android的android.os.Bundle类来表示。Intent类用下述两个方法对extra Bundle进行访问:5.2 Android意图(Intent)5.2.4 利用组件直接激活活动我们已经看到,用意图来启动活动的办法有两种:由显式行动来启动活动和借助URI数据由通用行动启动活动。此外,Android还提供了更直接的办法来启动活动:即指定活动的ComponentName,它是关于对象的包名和类名的一种抽象。对于Intent类来说,它的许多方法都能够用来指定组件:5.2 Android意图(Intent)5.2.5 意图的类属为了便于用该类名来查找活动,Android把活动分成了类属(Category)。例如,启动Android时需查找类属为CATEGORY_ LAUNCHER的那些活动。然后取得该活动名和图标,并显示在启动的主屏幕上(即一系列应用程序图标)。又譬如Android启动时查找标记为CATEGORY_ HOME的活动来显示主屏。类似地,类属CATEGORYGADGET把活动标记为适合于在另一个活动内嵌人或重用。一般地说,字符串为LAUNCHER的类属定义格式遵从下述约定:5.2 Android意图(Intent)5.2.5 意图的类属5.2 Android意图(Intent)5.2.6 意图解析的规则在活动层次的顶部是附加到意图上的意图名。如果它已经设置,则该意图的属性忽略不计,并选择该意图准备执行。然后,Android查看意图的行动属性。如果该意图指明一个行动,则目标活动必须将该行动列为意图过滤器的一部分;如果没有指定其他属性,则Android激活这个活动。如果存在着多个活动,Android将显示活动选择器(chooser)o接着,Android查看意图的数据部分。如果意图指定了数据URI,但没有提供类型,则通过ContentProvider.getType)从URI检索该类型。目标活动必须通过意图过滤器指明它能够处理这种类型的数据。如果数据URI不是内容URI或未指定数据类型,就需要考虑URI的模式。接着目标活动应当表明它可以处理这种模式类型的URI。然后Android then查看类属,Android只选取匹配该类属的活动。最后,如果指定了意图的类属,则目标活动应当在其过滤器内声明该类属。5.2 Android意图(Intent)5.2.7 运用ACRION_PICK要用表示Android内容游标的MIME类型中选择多个项目,需要说明项目集合。这个URI的实际MIME类型与下面给出的类似:vnd.android.cursor.dir/vnd.google.note活动的职责是根据URI从内容提供者检索数据。这也是把数据封装在内容提供者内的原因,只要这种封装是可能的。对于返回这种数据的所有行动都不能使用startActivity(),因为startActivity()不返回结果。5.2 Android意图(Intent)5.2.8 GET_CONTENT行动ACTION_ GET_ CONTENT类似于ACTION_ PICK。在ACTION_ PICK情况下,我们指定的是表示项目集合的URI,如notes集合。预期这个行动会获取notes之一,并返回给调用者。对于ACTION_ GET_ CONTENT,我们向Android指明需要一个具体的MIME类型项目。Android搜索可创建这些项目之一的活动,或搜索可从满足MIME类型的现有项目集合中进行选择的活动。5.3 本章小结本章主要介绍内容提供者android.provider,android.content和与之密切相关的意图类。其中android.provider包是内部提供者,它是预制数据库的封装。而android.content包包含3个重要的类,Content.Provider,ContentResolver和Intent。它们可从包内和包外共享数据,这些数据可以包含在preference(首选项)、文件、SQLite和Web服务器上。它们都需要通过URI访问这些数据源。在访问过程中经常要用到MIME类型。因此5.1.2分析内容提供者结构时也内介绍了MIME类型。为了对内容提供者的应用有具体的了解,我们给出了一个实现它的例子。意图是比较复杂的高年,5.2节介绍了用多种方式通过意图(Intent)来启动其他活动的问题。同时也介绍了行动(Action)和过滤器(filter)的概念与使用。感谢观看Android基础与应用开发教程大连理工大学出版社建立用户界面和使用组件第6章6.1 Android的用户界面在Android中可以选用三种办法来组建用户界面:全部用Java代码来构建用户界面,在XML文中定义用户界面,把这两种办法结合起来使用,即在XML中定义用户界面,然后在代码中引用和修改它。为了具体阐明这点,我们组建一个分别使用上述三种办法的用户界面示例。为此,我们先定义一种命名法则。进行UI开发时,经常用到视图(view、组件(control)、小窗体(widget)、容器(container)和布局(layout)等术语。6.2 Android的常用组件文本框组件是Android中用到的第一种组件。Android有一套完善的文本框组件,它们是TextView,EditText,AutoCompleteTextView和MultiCompleteTextView组件。6.2.1 文本框组件TextView6.2 Android的常用组件 1.TextView文本框组件TextView只能显示文本,不能编辑文本。但它与标签不同,TextView组件有一些重要的属性。如autoLink属性设置到某web URL时,该组件就可查找和突显该URL,且当用户单击TextView时,系统将用该URL启动浏览器。实际上,TextView更有意思的应用来自android.text.util.Linkify类Cz7。该类可获取一段文本或正则表达式,并转换为可单击的链接文本:6.2.1 文本框组件TextView6.2 Android的常用组件2.EditText编辑框组件EditText是TextView的子类,它的文本可以被编辑,但用户一次只能给它输人两段文字。EditText有许多属性,如autoText属性可纠正拼写错误;capitalize属性可控制单词或句子首字符大写;phoneNumber属性可接收指定的电话号码;password属性可设置默认的密码等。EditText组件的默认行为是显示一行文本,并可按需扩展其内容。换言之,如果用户输人超过一行,将会出现另一行。但是若将singleLine属性设置为true,用户就只能输人一行。移动设备的软件是帮助用户快速做决策。因此,希望加亮显示EditText的部分内容。可用静态或动态方式完成这种设置。静态设置是直接在XML文件内给字符串添加标记:6.2.1 文本框组件TextView6.2 Android的常用组件3.AutoCompleteTextView自动完成文本框组件AutoCompleteTextView组件3是具有自动完成功能的TextView。换言之,当用户给TextView输人文字时,该组件可给用户显示提示信息供选择,如下述代码所示:6.2.1 文本框组件TextView6.2 Android的常用组件4.MultiAutoCompleteTextView多项自动完成文本框组件6.2.1 文本框组件TextView6.2 Android的常用组件按钮是窗口小部件(widget工具箱中最常用的组件之一。Android提供了一系列典型的按钮和一些附加部分(extras)。本节讨论三种按钮组件:基本按钮、图像按钮和开关按钮。图6-3是它们的用户界面。顶部的按钮是基本按钮,中间的按钮是图像按钮,而底部的按钮是开关按钮。6.2.2 按钮组件6.2 Android的常用组件1.基本按钮组件ButtonAndroid中的基本按钮类是android,widget.Button。其主要用途是处理单击事件。2.图像按钮组件ImageButtonAndroid通过android.widget.ImageButton类提供图像按钮。3.开关按钮组件ToggleButtonToggleButton是一个两状态的按钮,即开(On)状态和关(Off)状态。4.复选框组件CheckBox几乎所有窗口小部件工具箱中都有复选框组件5.单选按钮组件RadioButton它给用户提供多种选择,但只能选取其中一个项目。6.2.2 按钮组件6.2 Android的常用组件Android SDK提供了若干种ListView组件,其外貌如图6-6所示,它垂直显示列表中的项目。要使用ListView通常需要编程扩展android.app.ListActivity类建立新活动。ListActivity类中包含ListView,并通过setListAdapter()方法为ListView设置数据。6.2.3 列表组件ListView6.2 Android的常用组件GridView也是大多数窗口小工具箱和Android中的组件,它用网格形式显示数据(文本和图像等)。GridView同样是在XML布局文件内定义(见代码6-11,然后用android.widget.ListAdapter将数据绑定到网格上。6.2.4 网格组件GridView6.2 Android的常用组件1.DatePicker和TimePicker组件DatePicker和TimePicker组件分别用于选择日期和时间。6.2.5 日期组件Date和时间组件Time6.2 Android的常用组件2.AnalogClock模拟时钟组件和DigitalClock数字时钟组件Android还提供了模拟时钟和数字时钟组件AnalogClock和DigitalClock(见图6-10)。6.2.5 日期组件Date和时间组件Time6.3 Android中其他有趣的组件 迄今为止,我们所叙述的都是Android应用程序中最基本的组件。除它们之外,Android还提供了其他有趣的组件。其中值得提及的有地图组件MapView、图片库组件Gallery和下拉菜单组件Spinner。地图组件可显示地图,是com.google.android.maps包内的.MapV