Android智能手机开发课程讲义完整版

上传人:无*** 文档编号:221174348 上传时间:2023-07-04 格式:PPT 页数:162 大小:2.10MB
收藏 版权申诉 举报 下载
Android智能手机开发课程讲义完整版_第1页
第1页 / 共162页
Android智能手机开发课程讲义完整版_第2页
第2页 / 共162页
Android智能手机开发课程讲义完整版_第3页
第3页 / 共162页
资源描述:

《Android智能手机开发课程讲义完整版》由会员分享,可在线阅读,更多相关《Android智能手机开发课程讲义完整版(162页珍藏版)》请在装配图网上搜索。

1、AndroidAndroid智能手机开发课智能手机开发课程讲义程讲义(完整版完整版)索引索引nAndroid教程01-平台概述-6nAndroid教程02-开发环境-37nAndroid教程03-应用程序模型-55nAndroid教程04-用户界面-72nAndroid教程05-应用编程-117nAndroid教程06-网络连接-137nAndroid教程07-硬件访问-142浙江大学计算机学院课程结构课程结构n目标:了解智能手机开发现状,Android平台体系结构和应用程序模型,覆盖了几个主要技术应用。平台综述平台综述开发环境开发环境程序结构程序结构数据存取数据存取网络连接网络连接硬件访问硬

2、件访问图形编程图形编程用户界面用户界面HelloWorldHelloAndroidFileAndroidHttpAndroidCameraAndroidHelloAndroid浙江大学计算机学院课程结构课程结构nAndroid平台综述:q平台介绍、开发者社区n开发环境:q构建Android开发环境n应该程序:q应用程序结构n典型应用:q用户界面q图形编程q数据存取q网络连接q硬件访问浙江大学计算机学院获取获取Android资料的途径资料的途径nhttp:/q有时需要翻墙nhttp:/q下载SDK等相关软件q查看文档q在线帮助q开发社区浙江大学计算机学院1、平台概述、平台概述智能手机开发智能手机

3、开发2010.06.开放手机联盟开放手机联盟n开放手机联盟,Open Handset Alliance:是美国Google 公司与2007 年11 月5 日宣布组建的一个全球性的联盟组织。n联盟将会支持Google 发布的Android 手机操作系统或者应用软件,共同开发名为Android 的开放源代码的移动系统。n开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员数量已经达到了43 家。浙江大学计算机学院移动手机联盟创始成员移动手机联盟创始成员nAplix、Ascender、Audience、Broadcom、中国移动、eBay、Esmertec、谷歌、宏达电、英特尔、

4、KDDI、Living Image、LG、Marvell、摩托罗拉、NMS、NTT DoCoMo、Nuance、Nvidia、PacketVideo、高通、三星、SiRF、SkyPop、Sonic Network、Sprint Nextel、Synaptics、TAT、意大利电信、西班牙电信、德州仪器、T-Mobile和Wind River。浙江大学计算机学院浙江大学计算机学院Google Phone浙江大学计算机学院OHA与与AndroidnOHA是一个软硬件开发者组织,包括 Google,NTT DoCoMo,Sprint Nextel,and HTC n目标:q加速智能移动设备的发展 q

5、提供用户更多更好更便宜的服务n由OHA开发的Android,是第一个完整的、开放的、免费的智能移动开发平台。浙江大学计算机学院AndroidnAndroid 软件系列包括操作系统、中间件和一些关键应用。nAndroid是基于JAVA的系统,运行在 Linux 2.6核上。nAndroid SDK 提供多种开发所必要的工具与API。浙江大学计算机学院特点特点1n应用框架可以重复使用,其组件也可以更换。nDalvik虚拟机针对移动设备进行了优化。n优化的图形能力支持2D、3D图形(OpenGL ES 1.0)。n集成了基于开源WebKit引掣的浏览器。nSQLite作为结构化数据存储。浙江大学计算

6、机学院特点特点2n多媒体支持多种音频、视频格式。nGSM Telephony(hardware dependent)n支持蓝牙Bluetooth,3G和WiFin支持照相机、GPS、指南针和加速度仪等传感器硬件。n丰富的开发环境。包括模拟机、调试工具、内存运行检测,以及为Eclipse IDE所写的插件。浙江大学计算机学院Android的优势的优势n 源代码完全开放,便于开发人员更清楚的把握实现细节,便于提高开发人员的技术水平,有利于开发出更具差异性的应用。n采用了对有限内存、电池和CPU 优化过的虚拟机Dalvik,Android 的运行速度比想象的要快很多。n运营商(中国移动等)的大力支持

7、,产业链条的热捧。n良好的盈利模式(3/7 开),产业链条的各方:运营商、制造商、独立软件生产商都可以获得不错的利益。将移动终端的评价标准从硬件向软件转变,极大的激发了软件开发者的热情。nAndroid 的源代码遵循Apache V2 软件许可,而不是通常的GPL v2 许可。有利于商业开发。n具有强大的Linux 社区的支持。浙江大学计算机学院Android的不足的不足n由于采用了Java 作为应用开发语言,目前可用的传统第三方应用还很少,但由于Android 是一款完全开源的移动计算平台,相信第三方应用会很快的丰富起来。nGoogle 提供了一套Java 核心包(J2SE 5,J2SE 6

8、)的有限子集,尚不承诺遵守Java 任何Java 规范,可能会造成ava 阵营的进一步分裂。n现有应用完善度不太够,需要的开发工作量较大。n基于QEMU 开发的模拟器调试手段不十分丰富,只支持通话、等,速度慢。n暂不具备Push Mail 和Office(DataViz、QuickOffice 计划近期推出)功能,目前主要面向的是普通消费者用户,对商业用户支持尚弱。浙江大学计算机学院系统环境系统环境nAndroid SDK所支持的操作系统:qWindows XP(32-bit)or Vista(32-or 64-bit)qMac OS X 10.4.8 or later(x86 only)qL

9、inux(tested on Linux Ubuntu Dapper Drake)浙江大学计算机学院Android的系统架构的系统架构浙江大学计算机学院Linux KernelnAndroid 基于Linux内核,但不是Linuxn内核提供系统核心服务,如进程、内存、电源管理,网络连接,驱动与安全等。n并不包括全部的Linux。浙江大学计算机学院Android内核内核nLinux 内核位于硬件和软件堆之间的抽象层q核心服务:安全机制、内存管理、进程管理、网络、硬件驱动。q内核扮演的是硬件层和系统其它层次之间的一个抽象层的概念。q操作系统的初始化和编程接口和标准的Linux 系统是有所不同的。浙

10、江大学计算机学院LibrariesnBionic LibcnFunction LibrariesnNative ServersnHardware Abstraction Libraries浙江大学计算机学院LibrariesnC/C+库:被各种Android 组件使用通过应用程序框架开发者可以使用其功能包括:n媒体库:MPEG4 H.264 MP3 JPG PNG.nWebKit/LibWebCore:Web 浏览引擎nSQLite 关系数据库引擎n2D,3D 图形库、引擎浙江大学计算机学院Function LibrariesnWebKitq基于开源WebKit的浏览器q支持CSS、Javas

11、cript、DOM、Ajaxn多媒体框架q基于PacketVideo OpenCORE平台q支持标准音频、视频nSQLiteq轻型数据库,支持多种平台浙江大学计算机学院Native Servers-Surfacen为多种应用提供2D、3D表面设计浙江大学计算机学院Native Servers-Audion音频处理浙江大学计算机学院Hardware Abstraction Libsn硬件虚拟层nUser space C/C+library layern硬件接口驱动n使Android平台逻辑与硬件接口分离浙江大学计算机学院Andoid Runtimen应用开发语言:JavanDalvik虚拟机q指

12、令:Dalvik Excutable nJava标准库q把java代码编译为Dalvik可执行文件(dex format)浙江大学计算机学院运行环境运行环境n核心库提供的Java 功能Dalvik 虚拟机依赖于Linux 内核,n可同时运行多个Dalvik 虚拟机,n每一个Android 应用程序在它自己的Dalvik VM 实例中运行VM 执行优化的Dalvik 可执行文件(.dex)qDx-工具把编译过的Java 文件转换为dex 文件浙江大学计算机学院Dalvik Virtual MachinenAndroid custom implementation virtual machineq

13、Provides application portability and runtime consistencyqRuns optimized file format(.dex)and Dalvik bytecodeqJava.class/.jar files converted to.dex at build timenDesigned for embedded environmentqSupports multiple virtual machine processes per deviceqHighly CPU-optimized bytecode interpreterqEfficie

14、ntly Using runtime memorynCore LibrariesqCore APIs for Java language provide a powerful,yet simple and familiar development platform浙江大学计算机学院DVM vs JVMnDVMqGoogleqDalvik excutablenJVMqSunqJava bytecode浙江大学计算机学院浙江大学计算机学院Applications FrameworknActivity managerq管理运行应用程序nContent Providerq在各应用之间共享数据nReso

15、urce Managerq管理非代码资源nNotification Managerq显示用户提示和状态栏nViews Systemq可扩展显示,可构建UI浙江大学计算机学院应用和框架应用和框架n核心应用,例如联系人,电子邮件,电话,浏览器,日历,地图,.n充分访问所有核心应用框架APIn简化组件的重用n用Java 编写应用程序浙江大学计算机学院ApplicationsnJAVA编写的应用程序浙江大学计算机学院开发环境开发环境 nIDE Eclipse nEclipse plug-in-ADTnSoftware Development Kit(SDK)nAndroid EmulatornDebu

16、ger浙江大学计算机学院Constants浙江大学计算机学院2、开发环境、开发环境智能手机开发建立建立Android开发环境开发环境nJDK 5 or JDK 6(JRE alone is not sufficient)q设置环境变量:JAVA_HOME、CLASSPATHnEclipse 3.3(Europa),3.4(Ganymede)nAndroid SDK nADT 0.8.0nEclipse安装ADT 插件浙江大学计算机学院Quick Startn1.准备q安装JDK(version 5 or 6 required)qEclipse(version 3.4 or 3.5,needed

17、 only if you want develop using the ADT Plugin).n2.下载安装SDK starter packageqTo install the SDK,simply unpack the starter package to a safe location and then add the location to your PATH.n3.为Eclipse安装ADT插件n4.添加其它SDK组件qUse the Android SDK and AVD Manager,included in the SDK starter package,to add one

18、or more Android platforms and other components to your SDK.nSDK Setup Done!浙江大学计算机学院Android可视化环境配置可视化环境配置nJDK1.6q下载网址:http:/ SDK 2.xq下载网址:http:/浙江大学计算机学院安装安装Java JDKnJDK 5 or JDK 6(JRE alone is not sufficient)nAndroid Development Tools plugin(optional)nNot compatible with Gnu Compiler for Java(gcj)浙

19、江大学计算机学院安装安装EclipsenEclipse 3.4(Ganymede)or 3.5(Galileo)nEclipse JDT plugin(included in most Eclipse IDE packages)qIf you need to install or update Eclipse,you can download it from http:/www.eclipse.org/downloads/.nSeveral types of Eclipse packages are available for each platform.For developing Andr

20、oid applications,we recommend that you install one of these packages:qEclipse IDE for Java EE Developers qEclipse IDE for Java Developers qEclipse for RCP/Plug-in Developers qEclipse Classic(versions 3.5.1 and higher)浙江大学计算机学院Android的的SDK版本版本nAndroid 2.1 Platform(new!)nAndroid 1.6 PlatformnAndroid 1

21、.5 PlatformnOlder PlatformsqAndroid 2.0.1 PlatformqAndroid 2.0 PlatformqAndroid 1.1 Platform浙江大学计算机学院操作系统操作系统nWindows XP(32-bit)or Vista(32-or 64-bit)nMac OS X 10.5.8 or later(x86 only)nLinux(tested on Linux Ubuntu Hardy Heron)q64-bit distributions must be capable of running 32-bit applications.For

22、information about how to add support for 32-bit applications.浙江大学计算机学院硬件环境硬件环境n不包括JAVA、Eclipse。浙江大学计算机学院安装安装Androidn解压,在Eclipse中Install New Software浙江大学计算机学院Android学习方法学习方法n了解什么是Androin建立开发环境n阅读SDK 文档n背景知识qJavaq面向对象q设计模式qEclipse使用qJ2ME、Brew、Symbian(选)浙江大学计算机学院Adroid应用应用浙江大学计算机学院Activity活动活动1n最基本的And

23、roid 应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。n大多数的应用是由多个屏幕显示组成。q例如:一个文本信息的应用也许有一个显示发送消息的联系人列表屏幕,第二个屏幕用来写文本消息和选择收件人,再来一个屏幕查看消息历史或者消息设置操作等。这里每一个这样的屏幕就是一个活动,很容易实现从一个屏幕到一个新的屏幕并且完成新的活动。n在某些情况下当前的屏幕也许需要向上一个屏幕活动提供返回值-比如让用户从手机中挑选一张照片返回通讯录做为电话拨入者的头像。浙江大学计算机学院Ac

24、tivity活动活动2n当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。用户可以返回到历史堆栈中的前一个屏幕。当屏幕不再使用时,还可以从历史堆栈中删除。默认情况下,Android 将会保留从主屏幕到每一个应用的运行屏幕。n简单理解Activity 代表一个用户所能看到的屏幕,Activity 主要是处理一个应用的整体性工作,例如,监听系统事件(按键事件、触摸屏事件等)、为用户显示指定的View,启动其他Activity 等。所有应用的Activity都继承于android.app.Activity 类,该类是Android 提供的基层类,其他的Activity 继承该父类后,通过

25、Override父类的方法来实现各种功能,这种设计在其他领域也较为常见。浙江大学计算机学院Activity生命周期生命周期浙江大学计算机学院Android模拟器模拟器nAndroid Emulator:q可模拟电话本、通话等功能q内置的浏览器和Google Maps都可以联网q可以使用键盘输入,q可单击模拟器按键输入,q可以使用鼠标单击、拖动屏幕进行操作。浙江大学计算机学院Android模拟器模拟器n模拟器和真机的不同之处 q不支持呼叫和接听实际来电,但可以通过控制台模拟电话呼叫(呼入和呼出)。q不支持USB连接。q不支持相机/视频捕捉。q不支持音频输入(捕捉),但支持输出(重放)。q不支持扩

26、展耳机。q不能确定连接状态。q不能确定电池电量水平和交流充电状态。q不能确定SD卡的插入/弹出。q不支持蓝牙。浙江大学计算机学院模拟器使用注意事项模拟器使用注意事项n遇到系统关于C盘空间不足之类的提示,是由于Android模拟器每次运行时会临时生成几个.tmp后缀的临时文件,一段时间后,其可能占用几G的磁盘空间。需要手工定期清理。浙江大学计算机学院3、应用程序、应用程序智能手机开发智能手机开发Android虚拟机虚拟机DalviknDalvik和标准Java虚拟机(JVM)首要差别qDalvik 基于寄存器,而JVM 基于栈。n基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间

27、更短。nDalvik和Java运行环境的区别qDalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,q每一个Dalvik 应用作为一个独立的Linux 进程执行。n独立进程可防止在虚拟机崩溃的时候所有程序都被关闭。qDalvik 提供一个拥有较少限制许可证的平台。浙江大学计算机学院重要包的描述重要包的描述nAndroid.app:提供高层的程序模型、提供基本的运行环境nAndroid.content:包含各种的对设备上的数据进行访问和发布的类nAndroid.database:通过内容提供者浏览和操作数据库nAndroid.graphics:底层的图形库,可以将它们直接绘制到屏幕

28、上.nAndroid.location:定位和相关服务的类nAndroid.media:提供一些类管理多种音频、视频的媒体接口nA:提供帮助网络访问的类,超过通常的.*接口nAndroid.os:提供了系统服务、消息传输、IPC 机制nAndroid.opengl:提供OpenGL 的工具nAndroid.provider:提供类访问Android 的内容提供者nAndroid.telephony:提供与拨打电话相关的API 交互nAndroid.view:提供基础的用户界面接口框架nAndroid.util:涉及工具性的方法,例如时间日期的操作nAndroid.webkit:默认浏览器操作接

29、口nAndroid.widget:各种UI 元素(大部分可见)在应用程序的屏幕中使用浙江大学计算机学院Android的相关文件类型的相关文件类型nJava文件-应用程序源文件qandroid 本身相当一部分都是用java 编写而成qandroid 的应用使用java 来开发。nClass文件-Java编译后的目标文件qGoogle使用Dalvik 来运行应用程序qAndroid的class 文件是编译过程中的中间目标文件,需要链接成dex 文件才能在Dalvik 上运行。浙江大学计算机学院Dex文件文件nDex文件-Android平台上的可执行文件qAndroid 虚拟机Dalvik 支持的字

30、节码文件格式。q这种虚拟机执行的并非Java 字节码,而是另一种字节码:dex 格式的字节码。q在编译Java 代码之后,通过Android 平台上的工具可以将Java 字节码转换成Dex 字节码。qDalvik VM 针对手机程式/CPU 做过最佳化,可以同时执行许多VM 而不会占用太多Resource。浙江大学计算机学院Apk文件文件nApk文件-Android上的安装文件qApk 是Android 安装包的扩展名,一个Android 安装包包含了与该Android 应用程序相关的所有文件。napk文件将AndroidManifest.xml文件、应用程序代码(.dex 文件)、资源文件和

31、其他文件打成一个压缩包。q一个工程只能打进一个.apk文件。qapk 文件的本质是一个zip包。浙江大学计算机学院Hello world!第一个运行程序第一个运行程序HelloAndroidnEclipse自动生成qnew android projectnHelloAndroid浙江大学计算机学院HelloAndroid.javanJava程序package com.android.helloAndroid;import android.app.Activity;import android.os.Bundle;public class HelloAndroid extends Activit

32、y /*Called when the activity is first created.*/Override public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);浙江大学计算机学院R.javanJava程序/*AUTO-GENERATED FILE.DO NOT MODIFY.*/package com.android.helloAndroid;public final class R public static fin

33、al class attr public static final class drawable public static final int icon=0 x7f020000;public static final class layout public static final int main=0 x7f030000;public static final class string public static final int app_name=0 x7f040001;public static final int hello=0 x7f040000;浙江大学计算机学院main.xm

34、lnXml文件Resources浙江大学计算机学院strings.xmlnXml文件 Hello Android,2010.HelloAndroid将要显示内容:Hello Android,2010.浙江大学计算机学院RUNRUN浙江大学计算机学院模拟运行模拟运行显示内容:Hello Android,2010.浙江大学计算机学院命令行运行命令行运行n启动模拟器qemulator-avd android1.6-skin HVGA-pn连接模拟器:qtelnet localhost 5554n拨打电话:qgsm call 13810000086n发送短信:qsms send 13810000086

35、 HelloAndroid浙江大学计算机学院模拟器屏幕模拟器屏幕nHVGA-L:480 x320横屏nHVGA-P:320 x480竖屏(默认)nQVGA-L:320 x240横屏nQVGA-P:240 x320竖屏nWVGA-L:800 x480横屏浙江大学计算机学院显示图像显示图像n增加ImageView浙江大学计算机学院4、用户界面、用户界面智能手机开发智能手机开发User Interface用户界面用户界面n说明布局Layoutn创建菜单Menusn创建对话Dialogsn处理用户UI事件n用户提示n确定风格n定制组件n数据与界面绑定浙江大学计算机学院模拟器屏幕模拟器屏幕nHVGA-L

36、:480 x320横屏nHVGA-P:320 x480竖屏(默认)nQVGA-L:320 x240横屏nQVGA-P:240 x320竖屏nWVGA-L:800 x480横屏浙江大学计算机学院UI用户界面设计:用户界面设计:Icon设计设计n应用程序需要各种各样的图标尺寸和定位尺寸和定位nLauncher icons要有多样化的形状和样式,但又要形成统一的视觉风格,其尺寸和定位也用统一:q红色边框为图标尺寸q蓝色边框是图形尺寸,比图标尺寸稍小,图形之外的空间用于显示阴影和特殊效果。q橙色边框是另外一种图形尺寸。两种类型的图形尺寸可以达到统一的视觉权重。浙江大学计算机学院Icon的风格的风格n符

37、合当下的流行趋势,避免过度使用隐喻。n高度简化和夸张,小尺寸图标也能易于识别,不宜太复杂。n尝试抓住程序的主要特征,比如音像作为音乐的icon。n使用自然的轮廓和形状,看起来几何化和有机化,不失真实感。n采用前视角,几乎没有透视,光源在顶部。n不光滑但富有质感。浙江大学计算机学院UI用户界面设计:用户界面设计:Widget设计设计nWidget是Android 1.5的一个新特性,允许程序显示一些常用而又重要的信息在用户的桌面主屏上q标准的Android系统映像包含了一些示例widgets包括指针时钟、音乐播放器和其他工具如Google搜索栏。qWidget即是可由用户自己编写的功能控件。n典

38、型的Android Widget有三个主要组件:q边框q框架q图形控件以及其他元素n注意widgets的开状尺寸以便在主屏上显示浙江大学计算机学院User Interface GuidelinesnActivity and Task DesignqActivities are the basic,independent building blocks of applications.As you design your applications UI and feature set,you are free to re-use activities from other application

39、s as if they were yours,to enrich and extend your application.qThese guidelines describe how activities work,illustrates them with examples,and describes important underlying principles and mechanisms,such as multitasking,activity reuse,intents,the activity stack,and tasks.It covers this all from a

40、high-level design perspective.浙江大学计算机学院UI用户界面设计:用户界面设计:Menu设计设计n选项菜单Options Menu:活动的主菜单。通过按下设备菜单键来显示它。选项菜单包含两组菜单项:q图标菜单Icon Menun这个是当用户按下菜单键时最初出现屏幕下方的item集合。它支持最多6个菜单项。只有这些菜单支持图标而且这些菜单并不支持checkboxes或者radio buttons。q扩展菜单Expanded Menun这是通过按“更多”菜单显现出来的一个竖向的项目列表。它仅当图标菜单过多时存在而且是由6个以及其它选项菜单组成。n上下文菜单Contex

41、t Menu:浮动菜单列表,通常在你长时间按在一个视图上时出现(比如一个列表项)n子菜单Submenu:浮动菜单列表,通过在选项菜单或上下文菜单选择菜单项显露出来。不支持嵌套子菜单。浙江大学计算机学院Android UI布局布局nViewGroup通过各种Layout,控制所属View的显示位置。ViewGroup(Layout)ViewViewViewViewViewViewGroup(Layout)浙江大学计算机学院LayoutnAbsoluteLayoutnFrameLayoutnGridViewnLinearLayoutnListLayoutnRadioGroupnTableLayou

42、tn浙江大学计算机学院显示图像显示图像n增加ImageViewn与原先的TextView,按垂直线性布局。线性布局LinearLayout浙江大学计算机学院布局布局n线性布局LinearLayoutq垂直:android:orientation=vertical“q水平:android:orientation=horizontal浙江大学计算机学院FrameLayoutn在屏幕上故意保留的空白空间,可以填充一个单独的对象。n所有子元素都钉到屏幕的左上角n不能为子元素指定位置浙江大学计算机学院TableLayoutn子元素放入到行与列中n不显示行、列或是单元格边界线n单元格不能横跨行,如HTML

43、 中一样浙江大学计算机学院AbsoluteLayoutn指明子元素确切的屏幕(X,Y)坐标n(0,0)是左上角,下移或右移时,坐标值增加n允许元素重叠(但是不推荐)n注意:q一般建议不使用AbsoluteLayout 除非你有很好的理由来使用它q因为它相当严格并且在不同的设备显示中不能很好地工作浙江大学计算机学院RelativeLayoutn让子元素指定它们相对于其他元素的位置(通过ID 来指定)或相对于父布局对象,跟AbsoluteLayout这个绝对坐标布局是个相反。n在RelativeLayout布局里的控件包含丰富的排列属性:qLayout above:控件在指定控件的上方qLayou

44、t below:控件在指定控件的下方qLayout to left of。n使用 RelativeLayout布局的时候,尽少程序运行时做控件布局的更改,因为 RelativeLayout布局里面的属性之间,很容易冲突。浙江大学计算机学院Color颜色颜色nandroid.graphics.Color 包含颜色值qColor.BLACKqColor.BLUEqColor.CYANqColor.DKGRAYqColor.GRAYqColor.GREENqColor.LTGRAYqColor.MAGENTAqColor.REDqColor.TRANSPARENTqColor.WHITEqColor

45、.YELLOW浙江大学计算机学院字体风格字体风格Typefacenandroid.graphics.Typeface实践qTypeface.create(Typeface family,int style)n创建一个混合型新的字体:有4*5 中搭配qTypeface.setTypeface(Typeface tf,int style)n设置一个混合型字体:有4*5 中搭配qTypeface.setTypeface(Typeface tf)n设置一个只有Typeface 风格的字体:有五种形式n字体(4种)qBOLD、BOLD_ITALIC、ITALIC、NORMALq粗体、粗斜体、斜体、普通字

46、体n风格(5种)qDEFAULT、DEFAULT_BOLD、MONOSPACE、SANS_SERIF、SERIFq默认字体、默认粗体、单间隔字体、无衬线字体、衬线字体浙江大学计算机学院Android菜单菜单nandroid提供了三种菜单类型,分别为options menu,context menu,sub menu。noptions menu(主菜单)就是通过按home键来显示,ncontext menu(右键菜单)在view上按上2s后显示n两种menu都有可以加入子菜单,子菜单不能种不能嵌套子菜单。nandroid还提供了对菜单项进行分组的功能,可以把相似功能的菜单项分成同一个组,这样可以

47、通过调用setGroupCheckable,setGroupEnabled,setGroupVisible来设置菜单属性,而无须单独设置。浙江大学计算机学院OptionMenu 1nOptionMenu(主菜单)qoptions menu最多只能在屏幕最下面显示6个菜单选项,称为icon menunicon menu不能有checkable选项。q多于6的菜单项会以more icon menu来调出,称为expanded menu。qoptions menu通过activity的onCreateOptionsMenu来生成,q这个函数只会在menu第一次生成时调用。n任何想改变options

48、menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。qonOptionsItemSelected 用来处理选中的菜单项。浙江大学计算机学院OptionMenu 2浙江大学计算机学院ContextMenu菜单菜单nContextMenu(右键菜单)qcontext menu是跟某个具体的view绑定在一起,在activity中用registerForContextMenu来为某个view注册context menu。context menu在显示前都会调用onCreateContextMenu来生成menu。onContextItemSelecte

49、d用来处理选中的菜单项。浙江大学计算机学院SubmenunSubmenu(子菜单)q一个浮动菜单列表,通过在选项菜单或上下文菜单选择菜单项显露出来。不支持嵌套子菜单。浙江大学计算机学院ButtonnMain.xmlnButton事件响应show=(TextView)findViewById(R.id.TextView01);press=(Button)findViewById(R.id.Button01);press.setOnClickListener(new OnClickListener()public void onClick(View v)show.setText(Hi,Google

50、 Android!););浙江大学计算机学院进程优先级顺序进程优先级顺序n 前台进程(Active Process):q前台Activity、包含正在运行的广播接收器、正在运行的服务n 可视进程(Visible Process):q包含一个可视化的Activityn 服务进程(Started Service Process):q包含一个被开启的服务(处理服务,不是直接可视,例如媒体播放器,网络上传、下载)n 后台进程(Background Process):q包含一个不可视的Activity(可以在任意时刻杀死该进程来回收内存)n 空进程(Empty Process):q没有持有任何应用程序组

51、件浙江大学计算机学院Activity状态状态1nactive:q当一个Activity 在屏幕的最上层时(对堆栈的最顶端),它就是属于active 或者running 的状态npaused:q如果一个Activity 失去焦点(focus)但还看得到它的画面(比如:一个新的Activity 画面并不是全屏幕或者它是一个半透明的情况),那失去焦点的Activity 则处在paused 的状态。像这个失去焦点的Activity它还是完全活着的,并没有消失。(活着的意思是指,Activity 自己本身所有的状态及数据都还是存在的,也跟窗口管理程序window manager 保持联系着),像这种pa

52、used 的Activity,会在一种情况下消失,那就是当系统的内存不够用之时,系统会自动判断,将不重要的Activity 移除。浙江大学计算机学院Activity状态状态2nstop:q如果一个Activity 被其它的Activity 完全的遮盖住时,它仍然保有全部的状态及数据,但因为它已不再被使用者看见,所以它的画面是被隐藏起来的(画面不需要更新),当系统内存不足时,这种stop 状态的Activity 时最先被系统考虑拿下来释放内存的。n finish:q当一个Activity 处于pause 或stop 的状态时,系统可以要求Activity 结束(finish)或直接移除(kill

53、)它。当它需要再度呈现在使用者面前时,它必须要能完整的重新启动及回复先前的状态。浙江大学计算机学院Activity状态转换状态转换nActivity状态转换浙江大学计算机学院Activity状态管理状态管理浙江大学计算机学院Active、PausednActive:qWhen an Activity is at the top of the stack,it is the visible,focused,foreground activity that is receiving user input.Android will attempt to keep it alive at all co

54、sts,killing Activities further down the stack as needed,to ensure that it has the resources it needs.When another Activity becomes active,this one will be paused.nPaused:qIn some cases,your Activity will be visible but will not have focus;at this point,its paused.This state is reached if a transpare

55、nt or non-full-screen Activity is active in front of it.When paused,an Activity is treated as if it were active;however,it doesnt receive user input events.In extreme cases,Android will kill a paused Activity to recover resources for the active Activity.When an Activity becomes totally obscured,it b

56、ecomes stopped.浙江大学计算机学院Stopped、InactivenStopped:qWhen an Activity isnt visible,it“stops.”The Activity will remain in memory retaining all state and member information;however,it is now a prime candidate for execution when the system requires memory elsewhere.When an Activity is stopped,its importan

57、t to save data and the current UI state.Once an Activity has exited or closed,it becomes inactive.nInactive:qAfter an Activity has been killed,and before its been launched,its inactive.Inactive Activities have been removed from the Activity stack and need to be restarted before they can be displayed

58、 and used.浙江大学计算机学院服务服务(Service)n服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序的上下文context里面,这取决于自身的需要。其他的组件可以绑定到一个服务Service上面,通过远程过程调用(RPC)来调用这个方法。q例如:媒体播放器的服务,当用户退出媒体选择界面后,由服务Service来保证音乐继续播放。n如何使用服务q第一种是通过调用Context.startServece()启动,调用Context.stoptService()结束,startService()可以传递参数给Service。q第二种方式是通过调用Conte

59、xt.bindService()启动,调用Context.unbindService()结束,q通过ServiceConnection 访问Service。二者可以混合使用,比如说我可以先startServece()再unbindService()。浙江大学计算机学院Service的生命周期的生命周期nstartService():q启动服务,直到调用stoptService(),或者Service调用stopSelf()停止。nbindService():qService和调用bindService()的进程同生共死,也就是说当调用bindService()的进程死了,那么它bind 的Se

60、rvice 跟着结束,期间可以调用unbindService()解除绑定让Service 结束n两种方式混合使用。浙江大学计算机学院使用服务进行音乐播放使用服务进行音乐播放nManifest.xml中的Service定义qqqqqqnService 子类中的Playerqpublic void onStart(Intent intent,int startId)qsuper.onStart(intent,startId);qplayer=MediaPlayer.create(this,R.raw.seven_days);qplayer.start();qqpublic void onDestr

61、oy()qsuper.onDestroy();qplayer.stop();qnActivity 中定义的Intent开启相应的ServiceqstartService(new Intent(com.liangshan.wuyong.START_AUDIO_SERVICE);qstopService(new Intent(com.liangshan.wuyong.START_AUDIO_SERVICE);浙江大学计算机学院使用服务进行音乐播放使用服务进行音乐播放1nManifest.xml中的Service定义浙江大学计算机学院使用服务进行音乐播放使用服务进行音乐播放2nService子类中的

62、Playerpublic void onStart(Intent intent,int startId)super.onStart(intent,startId);player=MediaPlayer.create(this,R.raw.seven_days);player.start();public void onDestroy()super.onDestroy();player.stop();浙江大学计算机学院使用服务进行音乐播放使用服务进行音乐播放3nActivity 中定义的Intent开启相应的ServicestartService(new Intent(+id/START_AUD

63、IO_SERVICE);stopService(new Intent(+id/START_AUDIO_SERVICE);浙江大学计算机学院添加添加Menu菜单菜单nMenu菜单public boolean onCreateOptionsMenu(Menu menu)/TODO Auto-generated method stubboolean result=super.onCreateOptionsMenu(menu);menu.add(0,INSERT_ID_Play,0,R.string.menu_toPlay);menu.add(0,INSERT_ID_Stop,0,R.string.m

64、enu_toStop);return result;/创建菜单浙江大学计算机学院IntentnIntent 是描述应用想要做什么,Intent 数据结构两个最重要的部分是:q动作:典型的动作类型有:MAIN(活动的门户)、VIEW、PICK、EDIT等。q动作对应的数据:以URI 的形式进行表示n例如:要查看某个人的联系方式,你需要创建一个动作类型为VIEW 的Intent,以及一个表示这个人的URI。nAndroid 使用了Intent 这个特殊类,实现在屏幕与屏幕之间移动。Intent 类用于描述一个应用将会做什么事。浙江大学计算机学院IntentFilternintentfilter 则

65、用于描述一个activity(或者IntentReceiver)能够操作哪些intent。q一个activity 如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter 要知道怎么去处理VIEW 动作和表示一个人的URI。nIntentFilter 需要在AndroidManifest.xml 中定义。浙江大学计算机学院IntentFiltern通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。q当向前导航时,activity 将会调用startActivity(IntentmyIntent)方法。q然后,系统会在所有安装的应用程序中定义

66、的IntentFilter 中查找,找到最匹配Intent 对应的activity。q新的activity 接收到通知后,开始运行。q当startActivity 方法被调用将触发解析Intent 的动作。n这个机制提供了两个关键好处:qActivities 能够重复利用从其它组件中以Intent 的形式产生的一个请求;qActivities 可以在任何时候被一个具有相同IntentFilter 的新的Activity 取代。浙江大学计算机学院IntentReceivernIntentReceiver 在AndroidManifest.xml 中注册,也可在代码中使用Context.registerReceiver()进行注册。n当一个intentreceiver 被触发时,应用不必对请求调用intentreceiver,系统会在需要的时候启动你的应用。n各种应用还可以通过使用Context.broadcastIntent()将自己的intentreceiver 广播给其它应用程序。n当希望应用能够对一个外部的事件(如电话呼入,数据网络可用,或者某个定时)做出响应,可以使用一个Inte

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!