内容简介
第1章 Android入门
1.1 Android的基本概念
1.1.1 Android简介
1.1.2 Android的系统构架
1.2 Android开发环境的搭建
1.2.1 开发Android程序需要些什么
1.2.2 安装Android SDK
1.2.3 安装Eclipse插件ADT
1.2.4 创建AVD
1.2.5 启动Android模拟器
1.2.6 让Android模拟器飞(X86加速)
1.2.7 测试Android开发环境是否安装成功
1.3 Android SDK中的常用命令行工具
1.3.1 启动和关闭ADB服务(adb start-server和adb kill-server)
1.3.2 查询当前模拟器/设备的实例(adb devices)
1.3.3 安装、卸载和运行程序(adb install、adbuninstall和am)
1.3.4 PC与模拟器或真机交换文件(adb pull和adbpush)
1.3.5 Shell命令
1.3.6 创建、删除和浏览AVD设备(android)
1.3.7 获取Android版本对应的ID
1.3.8 创建SD卡
1.4 Android的学习资源
1.5 GooglePlay
1.6 小结
第2章 第一个Android程序
2.1 编写用于显示当前日期和时间的程序
2.1.1 新建一个Android工程
2.1.2 界面控件的布局
2.1.3 编写实际代码
2.2 调试程序
2.3 签名和发布应用程序
2.3.1 使用命令行方式进行签名
2.3.2 使用ADT插件方式进行签名
2.4 DDMS透视图
2.5 小结
第3章 Android应用程序架构
3.1 Android应用程序中的资源
3.1.1 资源存放在哪里
3.1.2 资源的种类
3.1.3 资源的基本使用方法
3.2 Android的应用程序组件
3.2.1 活动(Activity)组件
3.2.2 服务(Service)组件
3.2.3 广播接收者(Broadcast receivers)组件
3.2.4 内容提供者(Content providers)组件
3.3 AndroidManifest.xml文件的结构
3.4 小结
第4章 建立用户接口
4.1 建立、配置和使用Activity
4.1.1 建立和配置Activity
4.1.2 Activity的生命周期
4.1.3 Activity生命周期的演示
4.2 视图(View)
4.2.1 视图简介
4.2.2 使用XML布局文件控制视图
4.2.3 在代码中控制视图
4.2.4 混合使用XML布局文件和代码来控制视图
4.2.5 定制控件(Widget)的三种方式
4.2.6 定制控件——带图像的TextView
4.2.7 定制控件——带文本标签的EditText
4.2.8 定制控件——可更换表盘的指针时钟
4.3 使用AlertDialog类创建对话框
4.3.1 AlertDialog类简介
4.3.2 “确认/取消”对话框
4.3.3 创建询问是否删除文件的“确认/取消”对话框
4.3.4 带3个按钮的对话框
4.3.5 创建“覆盖/忽略/取消”对话框
4.3.6 简单列表对话框
4.3.7 单选列表对话框
4.3.8 多选列表对话框
4.3.9 创建3种选择省份的列表对话框
4.3.10 水平进度对话框和圆形进度对话框
4.3.11 水平进度对话框和圆形进度对话框演示
4.3.12 自定义对话框
4.3.13 创建登录对话框
4.3.14 用Activity托管对话框
4.3.15 创建悬浮对话框和触摸任何位置都可以关闭的对话框
4.4 Toast和Notification
4.4.1 用Toast显示提示信息框
4.4.2 Notification与状态栏信息
4.5 布局
4.5.1 框架布局(FrameLayout)
4.5.2 霓虹灯效果的TextView
4.5.3 线性布局(LinearLayout)
4.5.4 利用LinearLayout将按钮放在屏幕的四角和中心位置
4.5.5 相对布局(RelativeLayout)
4.5.6 利用RelativeLayout实现梅花效果的布局
4.5.7 表格布局(TableLayout)
4.5.8 计算器按钮的布局
4.5.9 绝对布局(AbsoluteLayout)
4.5.10 查看apk文件中的布局
4.6 小结
第5章 控件详解
5.1 显示和编辑文本的控件
5.1.1 显示文本的控件:TextView
5.1.2 在TextView中显示URL及不同字体大小、不同颜色的文本
5.1.3 带边框的TextView
5.1.4 设置TextView控件的行间距
5.1.5 输入文本的控件:EditText
5.1.6 在EditText中输入特定的字符
5.1.7 按Enter键显示EditText
5.1.8 自动完成输入内容的控件:AutoCompleteTextView
5.2 按钮与复选框控件
5.2.1 普通按钮控件:Button
5.2.2 异形(圆形、五角星、螺旋形和箭头)按钮
5.2.3 图像按钮控件:ImageButton
5.2.4 同时显示图像和文字的按钮
5.2.5 选项按钮控件:RadioButton
5.2.6 开关状态按钮控件:ToggleButton
5.2.7 复选框控件:CheckBox
5.2.8 利用XML布局文件动态创建CheckBox
5.3 日期与时间控件
5.3.1 输入日期的控件:DatePicker
5.3.2 输入时间的控件:TimePicker
5.3.3 DatePicker、TimePicker与TextView同步显示日期和时间
5.3.4 显示时钟的控件:AnalogClock和DigitalClock
5.4 进度条控件
5.4.1 进度条控件:ProgressBar
5.4.2 拖动条控件:SeekBar
5.4.3 改变ProgressBar和SeekBar的颜色
5.4.4 评分控件:RatingBar
5.5 其他重要控件
5.5.1 显示图像的控件:ImageView
5.5.2 可显示图像指定区域的ImageView控件
5.5.3 动态缩放和旋转图像
5.5.4 列表控件:ListView
5.5.5 可以单选和多选的ListView
5.5.6 动态添加、删除ListView列表项
5.5.7 改变ListView列表项选中状态的背景颜色
5.5.8 封装ListView的Activity:ListActivity
5.5.9 使用SimpleAdapter建立复杂的列表项
5.5.10 给应用程序评分
5.5.11 可展开的列表控件:ExpandableListView
5.5.12 下拉列表控件:Spinner
5.5.13 垂直滚动视图控件:ScrollView
5.5.14 水平滚动视图控件:HorizontalScrollView
5.5.15 可垂直和水平滚动的视图
5.5.16 网格视图控件:GridView
5.5.17 可循环显示和切换图像的控件:Gallery和ImageSwitcher
5.6 小结
第6章 View事件分发机制
6.1 事件分发的始作俑者
6.2 View类中的事件分发引擎
6.3 ViewGroup类的事件分发引擎
6.4 通过代码验证View事件分发机制
6.4.1 实现一个派生自Button的类
6.4.2 实现布局
6.4.3 实现主窗口类
6.5 单击事件(onClick)是如何被触发的
6.6 Activity中的dispatchTouchEvent方法
6.7 小结
第7章 移动存储解决方案
7.1 最简单的数据存储方式:SharedPreferences
7.1.1 使用SharedPreferences存取数据
7.1.2 数据的存储位置和格式
7.1.3 存取复杂类型的数据
7.1.4 设置数据文件的访问权限
7.1.5 可以保存设置的Activity:PreferenceActivity
7.2 文件的存储
7.2.1 openFileOutput和openFileInput方法
7.2.2 SD卡文件浏览器
7.2.3 存取SD卡中的图像
7.2.4 SAX引擎读取XML文件的原理
7.2.5 将XML数据转换成Java对象
7.3 SQLite数据库
7.3.1 SQLite数据库管理工具
7.3.2 创建数据库和表
7.3.3 模糊查询
7.3.4 分页显示记录
7.3.5 事务
7.4 在Android中使用SQLite数据库
7.4.1 SQLiteOpenHelper类与自动升级数据库
7.4.2 SimpleCursorAdapter类与数据绑定
7.4.3 带照片的联系人管理系统
7.4.4 将数据库与应用程序一起发布
7.4.5 英文词典
7.5 持久化数据库引擎(db4o)
7.5.1 什么是db4o
7.5.2 下载和安装db4o
7.5.3 创建和打开数据库
7.5.4 向数据库中插入Java对象
7.5.5 从数据库中查询Java对象
7.5.6 高级数据查询
7.5.7 更新数据库中的Java对象
7.5.8 删除数据库中的Java对象
7.6 小结
第8章 App之间的通信
8.1 Intent与Activity
8.1.1 用Intent启动Activity,并在Activity之间传递数据
8.1.2 调用其他应用程序中的Activity(拨打电话、浏览网页、发E-mail等)
8.1.3 定制自己的ActivityAction
8.1.4 将电子词典的查询功能共享成一个ActivityAction
8.2 接收和发送广播
8.2.1 接收系统广播
8.2.2 开机可自动运行的程序
8.2.3 收到短信了,该做点什么
8.2.4 显示手机电池的当前电量
8.2.5 在自己的应用程序中发送广播
8.2.6 接收联系人系统中发送的添加联系人广播
8.3 小结
第9章 服务(Service)
9.1 Service起步
9.1.1 Service的生命周期
9.1.2 绑定Activity和Service
9.2 系统服务
9.2.1 获得系统服务
9.2.2 监听手机来电
9.2.3 来电黑名单
9.2.4 在模拟器上模拟重力感应
9.2.5 手机翻转静音
9.3 时间服务
9.3.1 计时器:Chronometer
9.3.2 预约时间Handler
9.3.3 定时器Timer
9.3.4 在线程中更新GUI组件
9.3.5 全局定时器AlarmManager
9.3.6 定时更换壁纸
9.3.7 多次定时提醒
9.4 跨进程访问(AIDL服务)
9.4.1 什么是AIDL服务
9.4.2 建立AIDL服务的步骤
9.4.3 建立AIDL服务
9.4.4 传递复杂数据的AIDL服务
9.5 小结
第10章 网络技术
10.1 可装载网络数据的控件
10.1.1 装载网络数据的原理
10.1.2 将网络图像装载到ListView控件中
10.1.3 Google图像画廊(Gallery)
10.2 WebView控件
10.2.1 用WebView控件浏览网页
10.2.2 手机浏览器
10.2.3 用WebView控件装载HTML代码
10.2.4 将英文词典整合到Web页中(JavaScript调用Java方法)
10.3 访问HTTP资源
10.3.1 提交HTTP GET和HTTP POST请求
10.3.2 HttpURLConnection类
10.3.3 上传文件
10.3.4 远程Apk安装器
10.3.5 调用WebService
10.3.6 通过WebService查询产品信息
10.4 Intemet地址
10.4.1 Internet地址概述
10.4.2 创建InetAddress对象
10.4.3 判断IP地址类型
10.5 客户端Socket
10.5.1 Socket类基础
10.5.2 多种连接服务端的方式
10.5.3 客户端Socket的超时
10.5.4 Socket类的getter和setter方法
10.5.5 Socket的异常
10.6 服务端Socket
10.6.1 创建ServerSocket对象
10.6.2 设置请求队列的长度
10.6.3 绑定IP地址
10.6.4 默认构造方法的使用
10.6.5 读取和发送数据
10.6.6 关闭连接
10.7 小结
第11章 多媒体技术
11.1 图形
11.1.1 图形绘制基础
11.1.2 绘制基本的图形和文本
11.1.3 绘制位图
11.1.4 用两种方式绘制位图
11.1.5 设置颜色的透明度
11.1.6 可任意改变透明度的位图
11.1.7 旋转图像
11.1.8 旋转动画
11.1.9 扭曲图像
11.1.10 按圆形轨迹扭曲图像
11.1.11 拉伸图像
11.1.12 拉伸图像演示
11.1.13 路径
11.1.14 沿着路径绘制文本
11.1.15 可在图像上绘制图形的画板
11.2 音频和视频
11.2.1 使用MediaPlayer播放MP3文件
11.2.2 使用MediaRecorder录音
11.2.3 使用VideoView播放视频
11.2.4 使用SurfaceView播放视频
11.3 小结
第12章 Fragment
12.1 什么是Fragment
12.2 Fragment的设计原则
12.3 Fragment初步
12.3.1 Fragment的使用方法
12.3.2 实例:一个简单的FragmentApP
12.4 Fragment的生命周期
12.4.1 生命周期详解
12.4.2 实例:Fragment生命周期演示
12.5 动态创建Fragment
12.6 Fragment与Activity之间的交互
12.7 回退栈
12.8 小结
第13章 ActionBar
13.1 ActionBar简介
13.2 ActionBar基础
13.2.1 隐藏/显示ActionBar
13.2.2 Action按钮
13.3 应用程序图标导航
13.4 收缩和展开Action View
13.5 导航标签
13.6 下拉导航列表
13.7 小结
第14章 Android 5.x新特性:质感主题
14.1 使用不同的质感主题
14.2 修改质感主题的默认属性值
14.3 小结
第15章 Android 5.x新特性:阴影和视图裁剪
15.1 阴影
15.1.1 高度和Z轴的位置
15.1.2 带有阴影的拖动效果
15.2 视图裁剪
15.3 小结
第16章 Android 5.x新特性:列表和卡片控件
16.1 RecyclerView控件简介
16.2 用RecyclerView控件实现垂直列表效果
16.2.1 建立Model
16.2.2 定制列表项的分隔条
16.2.3 实现Adapter类
16.2.4 如何使用RecyclerView控件
16.2.5 用RecyclerView控件实现增加和删除列表项的效果
16.3 用RecyclerView控件实现画廊的效果
16.3.1 为画廊提供数据
16.3.2 自定义RecyclerView控件
16.3.3 让RecyclerView控件横屏显示
16.4 CardView控件
16.4.1 出现R$styleable没找到错误的原因
16.4.2 在布局文件中使用CardView
16.4.3 用Java代码来控制CardView控件
16.5 小结
第17章 Android 5.x新特性:Drawable资源
17.1 着色
17.2 矢量Drawable资源
17.3 矢量动画
17.3.1 指针会动的时钟
17.3.2 笑脸表情
17.4 Ripple Drawable资源
17.5 小结
第18章 其他Android 5.x新特性
18.1 以Immersive模式隐藏及显示状态栏和导航条
18.1.1 什么是Immersive模式
18.1.2 实现界面的布局
18.1.3 隐藏和显示
18.1.4 监听隐藏和显示状态
18.2 新的通知中心
18.3 续航与安全性
18.4 更多的新功能
18.5 小结
第19章 2D动画
19.1 帧(Frame)动画
19.1.1 AnimationDrawable与帧动画
19.1.2 通过帧动画方式播放GIF动画
19.1.3 播放帧动画的子集
19.2 补间(Tween)动画
19.2.1 移动补间动画
19.2.2 循环向右移动的EditText与上下弹跳的球
19.2.3 缩放补间动画
19.2.4 跳动的心
19.2.5 旋转补间动画
19.2.6 旋转的星系
19.2.7 透明度补间动画
19.2.8 投掷炸弹
19.2.9 振动效果
19.2.10 自定义动画渲染器(Interceptor)
19.2.11 以动画方式切换View的控件ViewFlipper
19.3 小结
第20章 OpenGL ES编程
20.1 OpenGLES简介
20.2 在3D空间中绘图
20.2.1 绘制3D图形的第一步
20.2.2 定义顶点
20.2.3 绘制三角形
20.2.4 三角形合并法绘制矩形
20.2.5 顶点法绘制矩形
20.2.6 顶点的选取顺序
20.2.7 索引法绘制矩形
20.2.8 基于OpenGLES的动画原理
20.2.9 旋转的矩形
20.3 视图
20.3.1 有趣的比喻:照相机拍照
20.3.2 模型变换:立方体旋转
20.3.3 用gluLookAt方法变换视图
20.4 颜色
20.5 小结
第21章 媒体特效API
21.1 实现主界面布局
21.2 初始化主界面
21.3 媒体特效API演示
21.3.1 Brightness特效
21.3.2 反差特效(Contrast)
21.3.3 Crossprocess特效
21.3.4 纪录片(Documentary)特效
21.3.5 双色调(Duotone)特效
21.3.6 鱼眼(Fish Eye)特效
21.3.7 垂直翻转特效
21.3.8 灰度特效
21.3.9 Lomoish特效
21.3.10 底片特效
21.3.11 色调特效
21.4 让特效生效
21.5 小结
第22章 资源、国际化与自适应
22.1 Android中的资源
22.1.1 Android怎么存储资源
22.1.2 资源的种类
22.1.3 资源文件的命名
22.2 定义和使用资源
22.2.1 使用系统资源
22.2.2 字符串(String)资源
22.2.3 数组(Array)资源
22.2.4 颜色(Color)资源
22.2.5 尺寸(Dimension)资源
22.2.6 类型(Style)资源
22.2.7 主题(Theme)资源
22.2.8 绘画(Drawable)资源
22.2.9 动画(Animation)资源
22.2.10 菜单(Menu)资源
22.2.11 布局(Layout)资源
22.2.12 属性(Attribute)资源
22.2.13 改进可显示图标的IconTextView控件
22.2.14 XML资源
22.2.15 RAW资源
22.2.16 ASSETS资源
22.3 国际化和资源自适应
22.3.1 对资源进行国际化
22.3.2 Locale与国际化
22.3.3 常用的资源配置
22.4 小结
第23章 访问Android手机的硬件
23.1 在手机上测试硬件
23.1.1 安装Android USB驱动
23.1.2 在手机上测试程序
23.1.3 在手机上调试程序
23.2 录音
23.3 控制手机摄像头(拍照)
23.3.1 调用系统的拍照功能
23.3.2 实现自己的拍照Activity
23.4 传感器在手机中的应用
23.4.1 在应用程序中使用传感器
23.4.2 电子罗盘
23.4.3 计步器
23.5 GPS与地图定位
23.5.1 Google地图
23.5.2 用GPS定位到当前位置
23.6 WIFI
23.7 小结
第24章 NDK技术
24.1 AndroidNDK简介
24.2 安装、配置和测试NDK开发环境
24.2.1 系统和软件要求
24.2.2 下载和安装AndroidNDK
24.2.3 下载和安装Cygwin
24.2.4 配置Android NDK的开发环境
24.2.5 编译和运行NDK自带的例子
24.3 AndroidNDK开发
24.3.1 JNI接口设计
24.3.2 编写Android NDK程序的步骤
24.3.3 将文件中的小写字母转换成大写字母(NDK版本)
24.3.4 配置Android.mk文件
24.3.5 AndroidNDK定义的变量
24.3.6 AndroidNDK定义的函数
24.3.7 描述模块的变量
24.3.8 配置Application.mk文件
24.4 小结
第25章 蓝牙技术
25.1 蓝牙简介
25.2 打开和关闭蓝牙设备
25.3 搜索蓝牙设备
25.4 蓝牙数据传输
25.5 蓝牙通信一定需要UUID吗
25.6 小结
第26章 有趣的Android技术
26.1 手势(Gesture)
26.1.1 创建手势文件
26.1.2 通过手势输入字符串
26.1.3 通过手势调用程序
26.1.4 编写自己的手势创建器
26.2 让手机说话(TTS)
26.3 动态壁纸
26.4 小结
第27章 Android App性能调优
27.1 刷新频率与丢帧
27.2 开发者选项与查看GPU负载
27.3 GPU渲染时间与性能调优
27.4 Overdraw与区域绘制
27.5 内存抖动与性能
27.6 小结
第28章 内存泄露检测
28.1 造成内存泄露的原因
28.1.1 非静态内嵌类
28.1.2 Handler要用静态变量或弱引用
28.1.3 线程引发的内存泄露
28.1.4 其他可能会造成内存泄露的情况
28.1.5 弱引用(WeakReference)和软引用(SoftReference)
28.2 内存泄露检测工具:Eclipse MAT
28.3 小结
第29章 项目实战:超级手电筒
29.1 手电筒APP简介
29.2 手电筒的架构
29.3 手电筒照明
29.3.1 手电筒的布局
29.3.2 通过代码调整控制区域位置
29.3.3 打开和关闭闪光灯
29.4 警告灯
29.5 发送莫尔斯密码
29.6 其他功能的实现
29.7 小结
第30章 项目实战:基于XMPP的IM客户端
30.1 XMPP简介
30.2 Openfire安装与配置
30.3 Spark的安装和使用
30.4 用户登录
30.5 获取好友信息
30.6 添加好友
30.7 发送聊天信息
30.8 接收聊天信息
30.9 其他功能
30.10 小结