logo资料库

android笔记全集.pdf

第1页 / 共322页
第2页 / 共322页
第3页 / 共322页
第4页 / 共322页
第5页 / 共322页
第6页 / 共322页
第7页 / 共322页
第8页 / 共322页
资料共322页,剩余部分请下载后查看
踏莎寻·紫韵 Android Page1 踏踏踏莎莎莎寻寻寻···紫紫紫韵韵韵 之 Android Android 总览: 第一章 基础开发 第二章 多媒体开发 第三章 高级进阶 序: 作品名称:踏莎寻·紫韵 之 Android 开始日期:2011 年 9 月 23 日星期五 13 时 3 分 28 秒 注: 1. 本书一些地方为了讲明白知识,说法可能不严谨,但主旨是,希望帮助您理解问题。 2. 本书并不是一个入门书籍,而只是将作者本人的学习经验写出。本书中一些知识点参考 自其他书籍、博客,版权归原作者所有。 3. 作者本人是一个程序员,所以本套书籍所有的知识都是围绕编程展开的。所以对于计算 机网络、多媒体等部分的内容不会过于深入讲解。 4. 本人水品有限,如果有错误之处,请您联系给予批评。 5. 本套书籍会不定时的更新、修改书中的错误,所以,您手中的可能不是最新版的,因此, 不要对我们踏莎寻失望,请:“相信品牌的力量”。 6. 您可以留着自己看,但是请不要往“百度文库”等地方上传,然后赚取利益。这是对作 者的不尊重,已经侵犯了作者的作品“发表权”。 联系方式:1021299802@qq.com 第一部分 基础开发 知识结构: 第一章 基础入门 第二章 页面控件 第三章 数据存取 第四章 网络编程 第五章 Android 组件 最后修改日期:2012 年 2 月 6 日星期一 16 时 27 分 21 秒
踏莎寻·紫韵 Android Page2 第一章 基础入门 概述 Android 英文含义为: 男性机器人,中文名称为安卓。 Android 是 Google 公司的产品。它是一个运行在 Linux 操作系统内核(kernel) 上的开放 手机平台(即开放源代码) 的操作系统。 Android 系统可以运行在手机、平板电脑等设备上。 在手机设备中,Android 操作系统的地位与 WindowsMobile、Symbian 等其它手机操作 系 统 处 在 同 一 级 别 。 常 见 的 智 能 手 机 操 作 系 统 有 :Symbian, Windows Mobile, RIM BlackBerry, Android, iPhone, Java/J2ME。 Google 公司在 Android 系统中内置了很多应用软件,如打电话、发短信软件。 目前,Android 系统中运行的应用程序都是使用 Java 程序语言来编写。 提示: Android 开发属于客户端开发,JavaEE 开发属于服务器端开发。 系统架构 Android 的系统架构和其他操作系统一样,采用了分层的架构。Android 操作系统被分为四 个层次,每一层都是为上层服务,各层次由内向外依次为: |- Linux Kernel 层 |- Libraries 和 Android Runtime 层 |- application framework 层 |- applications 层 提示:此图可放大后观看。 最后修改日期:2012 年 2 月 6 日星期一 16 时 27 分 21 秒
踏莎寻·紫韵 Android Page3 Linux Kernel 层: |- 在 linux 内核层中提供的各种驱动和管理程序都是由 C/C++语言编写的,这些程序为 Libraries 和 Android Runtime 层的程序提供服务。 Libraries 和 Android Runtime 层: |- Libraries(库) :Android 包含一些 C/C++ 库,这些库能被 Android 系统中不同的组件 使用。比如应用程序框架层中的框架会通过 JNI 技术调用 Libraries 提供的函数库: |- FreeType 用于位图(bitmap)和矢量(vector)字体显示。 |- SQLite 是一个在手机等移动设备中通用的关系型数据库引擎。 |- WebKit/LibWebCore 是 Android 中内置的 Web 浏览器引擎。 |- Android Runtime (Android 运行环境): |- Android 运行环境又分为两部分:核心库和 Dalvik 虚拟机。 |- 核心库中提供了 JavaSE 核心类库的大多数类(但并不是全部,如 Android 不支持 JavaSE 的 Swing 编程)。 |- Dalvik 是 Google 公司自己设计的用于 Android 平台的 Java 虚拟机。Android 系统 中的应用程序是运行在 Android 自身的 Dalvik 虚拟机上的,而不是运行在 Java VM 之上。 Dalvik 虚拟机: |- Dalvik 虚拟机中执行的同样是字节码文件。但字节码文件的后缀名为 .dex 。 |- dex 格式是专为 Dalvik 设计的一种压缩格式,其针对小内存使用做了优化,适合内存 和处理器速度有限的系统。 |- dex 文件格式可以减少整体文件尺寸,提高 I/O 操作的类查找速度。 |- odex 是为了在运行过程中进一步提高性能,对 dex 文件的进一步优化。 |- Dalvik 虚拟机依赖于 Linux 内核的一些功能,比如线程机制和底层内存管理机制。 |- 在 Android 系统中可以同时运行多个应用程序,每个应用程序都会开启一个独立的进程, 在每个进程中有一个 Dalvik 虚拟机的实例,应用程序只能在它自己的 Dalvik VM 实例中运 行。 应用程序占据独立的进程可以防止在某个虚拟机崩溃的时候导致 Android 系统内的所 有程序都被关闭。 资料: Dalvik 基于 CPU 中的寄存器,而 Java VM 基于内存中的栈。基于寄存器的虚拟机对于更 大的程序来说,在它们编译的时候,花费的时间更短。 Dex 文件的产生: |- 首先,使用 Java 语言编写源文件,并将源文件编译生成.class 文件。 |- 然后,使用 Android SDK 中的 dx 工具把编译后得到的多个.class 文件转换为一个 jar 文 件,然后 dx 工具会自动的再将 jar 文件优化压缩为一个.dex 文件。 |- dex 是 Dalvik VM executes 的缩写,即 Android Dalvik 执行程序,它是 Dalvik 的字节 码。 application framework 层: |- 提供使用 Java 编写的各种框架,以供应用程序员在程序中调用,本层中的代码由 Java 语 言编写。 最后修改日期:2012 年 2 月 6 日星期一 16 时 27 分 21 秒
踏莎寻·紫韵 Android Page4 applications 层: |- 此层中的应用程序是由应用程序员编写或系统内置的。 Android 的其他特性: |- 集成的浏览器 基于开源的 WebKit 引擎。 |- 优化的图形库 基于 OpenGL ES 1.0 定制的 2D/3D 图形库。 |- SQLite 数据库用作结构化的数据存储。 |- 多媒体支持 包括常见的音频、视频和静态图像格式。 四大组件 Android 中提供了四大组件:Activity、BroadcastReceiver、ContentProvider、Service。 活动(Activity): 在 Android 中,一个 Activity 就是一个用户界面。Activity 和 HTML、JSP 文件类似,代表一 个“视图” 视图用于将信息通过“控件”显示给用户看。在 Activity 中可以添加各种各样 的控件(如按钮、文本框等)。 各种语言开发的 GUI 应用程序都是由多个视图组成,程序会在多个视图之间来回的跳转。 视图之间还可以通过传递参数和获取返回值的方式进行数据的交互。在 Android 中也可以实 现多个 Activity 之间的切换、数据传递。 广播接收者(BroadcastReceiver): 在 Android 系统中,当用户手机接到外界的电话、短信的时候,系统内部就会自动产生相应 的广播。然后广播将会被系统发送给需要此广播的应用软件。 广播接收者,是应用程序中用来接收广播的一个组件。广播既可以使系统发出的,也可以是 当前或者其他应用程序发出的。一个应用程序内部可以定义多个广播接收者。当系统发送广 播时,每个应用程序的广播接收者都会查看该广播是否是其所需要的,若是,则广播接收者 将会接收该广播。 由于在系统内置的电话和短信的软件中,就定义了广播接收者,所以,当用户手机接到外界 的电话、短信时这两个软件会接收到系统广播。软件接到广播后,就可以做出相应的操作。 比如短信软件会提示用户有新短信到来等。 其实,系统发出的广播任何有权限的软件都可以接收到。 只要在用户开发的软件中定义了一个用来“接收短信”的广播接收者后,当手机来短信时, 用户开发的软件和系统内置的短信软件都会接收到系统的广播。 广播接收者接收广播时是有优先级的,优先级高的接收者会先接到广播。 先接到广播的应用程序,可以将广播给拦截下来。 从而使其他程序无法获得系统的广播。 垃圾短信过滤器就是利用了广播接收者的优先级将短息拦截下来,使系统内置的短信软件无 法接到系统广播,以此来达到屏蔽垃圾短信的目的。 内容提供者(ContentProvider): 最后修改日期:2012 年 2 月 6 日星期一 16 时 27 分 21 秒
踏莎寻·紫韵 Android Page5 在 Android 中应用程序的数据可以保存在文件或 SQLite 数据库中。 数据对于每个应用程序来说都应该是私有的。应用程序 A 若想访问应用程序 B 的数据,则 必须要经过 B 的同意。 退一步说,若是应用 B 允许应用 A 直接通过 IO 等方式操作应用 B 的数据,那么应用 B 的 数据的安全性就大大降低了。若应用 A 是个恶意程序,此时它会利用这个特点胡乱修改应 用 B 的数据,这是绝对不允许的。 因此若需要在程序 A 和 B 之间进行数据的交换,则就需要同时运行 A 和 B,然后再交换数 据。这样一来,A 所进行的操作都会被 B 所“看”到,B 也可以对 A 所进行的操作进行限 制。 然而每个应用程序都是运行在自己的进程中,当应用 A 需要访问应用 B 的数据时,数据就 需要在不同的虚拟机之间传递。这样操作起来可能就很困难。 此时可以使用内容提供者,它能在不同的应用程序之间方便的传递数据。 如:手机中的通讯录也是一个应用程序,有时候需要在用户程序中获取通讯录的数据,此时 就可以使用内容提供者。 反过来,当用户程序需要向外界提供数据的时候,也可以通过内 容提供者来完成。 服务(Service): 与 PC 机上的 Window 操作系统一样,在 Android 中也存在服务。Android 中的服务主要用于 保证耗时的操作正常执行完成。服务是没有界面的,它运行在程序的后台。 通常,应用程序中一些耗时的操作会被放置在一个线程中运行。 虽然线程可以在四大组件 中的任何一个组件中启动,但是在一些特殊的应用场景下,线程就必须要在服务中启动。 若线程在 Activity、广播接收者、内容提供者中启动,当 Activity 被关闭、广播接收者处理 完广播或者内容提供者提供完数据后,他们三者就会被销毁。 虽然他们销毁后不会立刻导 致在其内部开启的线程被终止,但是在系统内存不足时,虚拟机就会回收那些没有引用的线 程对象。若那时线程并没有执行完毕,则就会导致无法预计的错误。 比如:音乐播放器通常需要后台播放,若在 Activity 中开启播放音乐的线程,那么当 Activity 被关闭且系统内存不足时,音乐播放可能就会停止了。 服务的开启和关闭可以由程序控制,由于服务没有用户界面、生命周期长,因此在其内部开 启的线程不会被回收掉。 扩展类库 android 提供一些扩展的 JAVA 类库,类库分为若干个包,每个包中包含若干个类。 android.app :提供高层的程序模型、提供基本的运行环境。 android.content :包含各种的对设备上的数据进行访问和发布的类。 android.database :通过内容提供者浏览和操作数据库。 android.graphics :底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制 到屏幕上。 android.location :定位和相关服务的类。 最后修改日期:2012 年 2 月 6 日星期一 16 时 27 分 21 秒
踏莎寻·紫韵 Android Page6 android.media :提供一些类管理多种音频、视频的媒体接口。 android.net :提供帮助网络访问的类,超过通常的 java.net.* 接口。 android.os :提供了系统服务、消息传输、 IPC 机制。 android.opengl :提供 OpenGL 的工具。 android.provider :提供类访问 Android 的内容提供者。 android.telephony :提供与拨打电话相关的 API 交互。 android.view :提供基础的用户界面接口框架。 android.util :涉及工具性的方法,例如时间日期的操作。 android.webkit :默认浏览器操作接口。 android.widget :包含各种 UI 元素(大部分是可见的)在应用程序的屏幕中使用。 Android 工程 搭建开发环境 |- 首先,安装 Java 开发工具(JDK5 或 JDK6) ,由于需要编译 Java 源程序,所以只安装 Java 运行环境 (JRE) 是不够的。 |- 然后,安装 Eclipse 。 |- 接着,安装 ADT 插件(可选,一般都会安装) 。 |- ADT(Android Development Toolsplugin) 基于 Eclipse 的 Android 开发工具扩充套件。 ADT 插件可以让用户快速的在 Eclipse 中建立一个 Android 项目。 |- 最后,安装 Android SDK(必选)。 |- Android SDK(Software Development Kit)软件开发工具,和 JDK 一样,Android SDK 提供了在 Android 平台使用 java 语言进行 android 应用程序开发必须的工具和 API 接口(类)。 |- 在 Android SDK 中也包含 Android 手机模拟器 (Emulator) ,通过使用手机模拟器,可 以使 Android 应用程序直接在计算机中运行。通常把 Android 手机模拟器称作 Android 虚拟 设备(AndroidVirtual Device), 简写为 AVD 。 提示: Android SDK,能在 Windows 、 Mac OS X 、 Linux 等多个平台上使用 。 新建应用程序 首先,File  new  other  android  Android Project 。 然后,在 Project name 中输入项目的名称: 然后,在 Contents 栏中选择第一项,表示将当前项目建立在当前工作空间中。 最后修改日期:2012 年 2 月 6 日星期一 16 时 27 分 21 秒
踏莎寻·紫韵 Android Page7 然后,在 BuildTarget 栏中选择 Android2.2,表示当前项目是基于 Android2.2 版本操作系统 开发的。 然后,在 Properties 栏中依次填写如下属性: |- application name :指出当前应用程序(在手机主菜单中显示)的名称。 |- package name :当前应用程序的核心包的包名。此包名就像是人的身份证一样,用于唯 一标识一个应用程序。也就说在同一台手机中,只能安装一个核心包的名称为 org.cxy.tomcat 的应用程序。若安装多个核心包具有相同名称的应用程序,则后安装的会覆盖掉原来的程序。 即会先卸载原来的程序。 |- create activity : 在 Android 中一个 Activity 就是一个视图。此项用来选择是否自动建立 一个 Activity 作为当前应用程序的主 Activity (最先显示的 Activity) 。主 Activity 也被称为入 口 Activity ,它相当于 JavaSE 里面的 main 方法。 |- Min SDK Version :指出当前应用程序运行所需要的 SDK 的最低版本。若不写,则默认 为 Android2.0 版本。 提示:上述建立 Android 工程的步骤在不同版本的 ADT 插件中会略有不同。 应用程序结构 在 Eclipse 中新创建一个 Android 应用程序,最初其内具有如下文件: |- src 目录:与 Java Project 一样,此文件夹用于存放程序员编写的源(.java)文件。。 |- gen 目录:存放 R.java 和 AIDL 等文件。 |- res 目录:存放资源文件,此目录下的文件发生变化会导致 R 文件发生变化。 |- Assets 目录:用于存放应用程序的源文件。 |- AndroidManifest.xml 文件:当前应用程序的清单文件。 |- project.properties 文件:指出运行当前应用程序需要的环境信息。如应用程序运行时所需 要 Adroid 系统的最低版本号。 |- project.cfg 文件:为 ADT 指明混淆 apk 时的配置信息。 最后修改日期:2012 年 2 月 6 日星期一 16 时 27 分 21 秒
踏莎寻·紫韵 Android Page8 gen 目录: 此目录中的所有源文件都由 ADT 插件自动生成,不需要程序员书写。 创建新项目时 ADT 会在 gen 文件夹内创建核心包,并在核心包内创建一个 R . java 文件。 R.java 在 Android 应用中起到“字典” 的作用,当咱们向 res 的某个子目录中中放入 xml 描述文件、图片等资源时,ADT 插件会为该资源生成一个 Int 类型的 id,同时还会为该资 源创建一个 int 类型变量,以文件的名称为变量名,以 id 为变量值,然后将变量写入到 R.java 中,在程序中,通过 R.java 可以很方便地找到对应资源。 提示:不要修改此文件夹内的任何文件。 res 目录: 当前应用可能使用到的各种资源都存放在此目录中,如 xml 界面文件,图片或数据。 子文件夹名称 描述 drawable layout 用于存放 png、jpg 等图像资源。 用于存放 xml 格式的用户界面文件。(也称为布局文件) 用于存放 xml 格式的数据文件。这些文件中保存了在当前应用中会使用到 的各种类型的数据,不同类型的数据一般会存放在不同的 xml 文件中。 values drawable 下有三个子文件夹:drawable-hdpi、drawable-mdpi、drawable-ldpi 。 |- drawable-hdpi 里面存放高分辨率的图片,如 WVGA (480x800),FWVGA (480x854) 。 |- drawable-mdpi 里面存放中等分辨率的图片,如 HVGA (320x480) 。 |- drawable-ldpi 里面存放低分辨率的图片,如 QVGA (240x320) 。 当在程序中需要显示某张图片时,Android 系统会根据当前机器的分辨率来分别到这几个文 件夹里面去找对应的图片。建议各自文件夹根据需求均存放不同版本(大小)的图片。 layout 文件夹: |- 在 Android 中,每个 Activity 就是一个用户界面,界面内的组件以及界面所使用的布局 一般都是由 xml 文件来构建的。在 Android 中 xml 布局文件主要用于显示用户操作界面。 |- 提示:Android 也可以向 Swing 那样直接在 Java 程序中通过代码来动态的构建用户界面。 values 文件夹: |- 此文件夹用来定义程序内要使用到的字符串、尺寸、样式、颜色、数组等数据。这些数 据保存在 xml 文件中。通常每种类型的数据都单独建立一个 xml 文件。 |- 字符串数据(strings.xml)、数组数据(arrays.xml)、颜色数据(colors.xml)。 |- 属性数据(attrs.xml)、样式数据(styles.xml)、尺寸数据(dimens.xml)。 xml 文件夹: |- 用来保存 xml 文件,这些 xml 在编译 apk 时,最终会被编译成二进制形式的。 raw 文件夹: |- 用来保存应用使用到的原始文件。这里的文件会原封不动的放入 apk 包中,不会被编译 为二进制形式,访问的方式也是通过 R 类。 最后修改日期:2012 年 2 月 6 日星期一 16 时 27 分 21 秒
分享到:
收藏