第1章 Android系统及其开发过程 1
1.1 Android系统概述 1
1.1.1 Android系统及特点 1
1.1.2 Android系统的体系结构 2
1.1.3 Android开发的分类 3
1.2 搭建Android Studio开发环境 4
1.2.1 安装Android Studio前的必要准备 4
1.2.2 安装Android Studio详解 5
1.2.3 设置环境变量 7
1.3 Android API和在线帮助文档 8
1.4 Android应用程序的开发过程 9
1.4.1 开发Android应用程序的一般过程 9
1.4.2 生成Android应用程序框架 10
1.4.3 编写代码生成MainActivity.java 12
1.4.4 在模拟器中运行应用程序 13
1.5 Android项目结构 13
1.5.1 目录结构 13
1.5.2 Android应用程序结构分析 19
1.6 Android应用程序设计示例 21
习题1 23
第2章 Android用户界面的设计 24
2.1 用户界面组件包widget和View类 24
2.2 文本标签TextView与按钮Button 25
2.2.1 文本标签 25
2.2.2 按钮及按钮处理事件 27
2.3 文本编辑框 32
2.4 Android布局管理 35
2.4.1 布局文件的规范与重要属性 36
2.4.2 常见的布局方式 37
2.5 进度条和选项按钮 46
2.5.1 进度条 46
2.5.2 选项按钮 48
2.6 图像显示类ImageView与画廊组件类Gallery 55
2.6.1 图像显示类ImageView 55
2.6.2 画廊组件类Gallery与图片切换器ImageSwitcher 59
2.7 消息提示类Toast 64
2.8 列表组件 67
2.8.1 列表组件类ListView 67
2.8.2 ListActivity类 69
2.9 滑动抽屉组件类SlidingDraw 72
习题2 76
第3章 多个用户界面的程序设计 78
3.1 页面的切换与传递参数值 78
3.1.1 传递参数组件Intent 78
3.1.2 Activity页面的切换 78
3.1.3 应用Intent在Activity页面之间传递数据 82
3.2 菜单设计 86
3.2.1 选项菜单 86
3.2.2 上下文菜单 89
3.3 对话框 91
3.3.1 消息对话框AlertDialog 91
3.3.2 其他几种常用对话框 96
习题3 100
第4章 图形与多媒体处理 101
4.1 绘制几何图形 101
4.1.1 几何图形绘制类 101
4.1.2 几何图形的绘制过程 102
4.1.3 自定义组件 107
4.2 触摸屏事件的处理 110
4.2.1 简单的触摸屏事件 110
4.2.2 手势识别 116
4.3 音频播放 120
4.3.1 多媒体处理包 120
4.3.2 多媒体处理播放器MediaPlayer 120
4.3.3 播放音频文件 121
4.4 视频播放 127
4.4.1 应用媒体播放器播放视频 127
4.4.2 应用视频视图播放视频 130
4.5 录音与拍照 133
4.5.1 用于录音、录像的MediaRecorder类 133
4.5.2 录音示例 134
4.5.3 拍照 137
4.6 动画技术 142
4.6.1 动画组件类 142
4.6.2 补间动画Tween Animation 143
4.6.3 属性动画Property Animation 148
习题4 152
第5章 后台服务与系统服务 153
5.1 后台服务Service 153
5.2 信息广播机制Broadcast 157
5.3 系统服务 166
5.3.1 Android的系统服务 166
5.3.2 系统通知服务Notification 167
5.3.3 系统定时服务AlarmManager 169
5.3.4 系统功能的调用 172
习题5 175
第6章 网络通信技术 176
6.1 Web视图 176
6.1.1 浏览器引擎WebKit 176
6.1.2 Web视图对象 176
6.1.3 调用JavaScript 180
6.2 基于TCP协议的网络程序设计 186
6.2.1 网络编程的基础知识 187
6.2.2 利用Socket设计客户机/服务器系统程序 191
6.2.3 应用Callable接口实现多线程Socket编程 196
6.3 基于HTTP协议网络程序设计 200
6.3.1 建立PHP服务器网站 200
6.3.2 应用HttpURLConnection访问Web服务器 200
习题6 210
第7章 应用Volley框架访问Web服务器 211
7.1 Volley框架及其应用 211
7.1.1 Volley包的下载与安装 211
7.1.2 JSON数据格式简介 212
7.1.3 Volley的工作原理和几个重要对象 216
7.1.4 Volley的基本使用方法 217
7.2 应用Volley框架设计网络音乐播放器 221
习题7 226
第8章 数据存储技术 227
8.1 SQLite数据库 227
8.1.1 SQLite数据库简介 227
8.1.2 管理和操作SQLite数据库的对象 228
8.1.3 SQLite数据库的操作命令 228
8.2 文件的处理 240
8.2.1 输入/输出流 240
8.2.2 处理文件流 241
8.3 轻量级存储SharedPreferences 248
8.4 访问远程数据库 250
习题8 255
第9章 地图服务与传感器检测技术 256
9.1 电子地图服务的应用程序开发 256
9.1.1 Android地图的SDK开发包的下载以及Key的申请 256
9.1.2 显示地图的应用程序示例 259
9.2 传感器检测技术 262
9.2.1 传感器简介 262
9.2.2 加速度传感器的应用示例 264
习题9 273
多个用户界面的程序设计
3.1 页面的切换与传递参数值
3.1.1 传递参数组件Intent
Intent是Android系统的一种运行时的绑定机制,在应用程序运行时连接两个不同组件。在Android 的应用程序中不管是页面切换还是传递数据或是调用外部程序都可能要用到Intent。Intent负责对应用中某次操作的动作、动作涉及的数据、附加数据进行描述,Android则根据此Intent的描述负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。因此可以将Intent理解为不同组件之间通信的“媒介”,其专门提供组件互相调用的相关信息。
Intent的属性有动作(Action)、数据(Data)、分类(Category)、类型(Type)、组件(Compent)以及扩展(Extra),其中最常用的是Action属性。
例如:
Intent.ACTION_MAIN 表示标识Activity为一个程序的开始。
Intent.ACTION_GET_CONTENT 表示允许用户选择图片或录音等特殊种类的数据。
Intent.ACTION_SEND 表示发送邮件的action动作。
Telephony.SMS_RECEIVED 表示接收邮件的action动作。
Intent.ACTION_ANSWER 表示处理呼入的电话。
Intent.Action_CALL_BUTTON 表示按“拨号”键。
Intent.Action_CALL 表示呼叫指定的电话号码。
3.1.2 Activity页面的切换
Activity跳转与传递参数值主要通过Intent类协助实现。在一个Activity页面中启动另一个Activity页面的运行是最简单的Activity页面切换方式。其步骤如下:
(1)创建一个Intent对象,其构造方法如下。
Intent intent = new Intent(当前Activity.this, 另一Activity.class);
(2)调用Activity的startActivity(intent)方法,切换到另一个Activity页面。
【例3-1】 从一个Activity页面启动另一个Activity页面示例。
创建名称为ex3_1的新项目,包名为com.ex3_1。在本项目中要建立两个页面文件及两个控制文件,第1个页面的界面布局文件为activity_main.xml、控制文件为MainActivity.java,第2个页面的界面布局文件为second.xml、控制文件为secondActivity.java,还要修改配置文件AndroidManifest.xml。
(1)设计第1个页面。
① 修改第1个页面的控制文件MainActivity.java,源代码如下:
1 package com.ex3_1;
2 import android.app.Activity;
3 import android.content.Intent;
4 import android.os.Bundle;
5 import android.view.View;
6 import android.view.View.OnClickListener;
7 import android.widget.Button;
8 public class MainActivity extends Activity
9 {
10 private Button btn;
11 @Override
12 public void onCreate(Bundle savedInstanceState)
13 {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.activity_main);
16 btn = (Button)findViewById(R.id.mButton);
17 btn.setOnClickListener(new btnclock());
18 }
19 class btnclock implements OnClickListener
20 {
21 public void onClick(View v)
22 {
23 Intent intent = new Intent(MainActivity.this, secondActivity.class);
24 //创建好Intent之后就可以通过它启动新的Activity
25 startActivity(intent);
26 }
27 }
28 }
② 第1个页面的布局文件activity_main.xml如下:
1
2 3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6 7 android:id="@+id/textView1"
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="@string/hello" />
11 12 android:id="@+id/mButton"
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 android:text="@string/button"
16 />
17
(2)设计第2个页面。
① 在项目中新建第2个页面的控制文件secondActivity.java。右击资源管理器中的com.example.ex3_1选项,在弹出的快捷菜单中选择New(新建)→File(文件)命令,如图3.1所示。
……