Java与Android移动应用开发:技术、方法与实践

更多详情

内容简介: 本书是一线程序员多年开发经验的结晶之作,深入浅出地讲解Android移动应用开发所需要的几乎全部基础内容,帮助读者快速进入Android应用开发,在项目中灵活应用各种开发技术和方法。
本书共29章,第1章讨论全书的知识架构及在学习和工作中如何使用本书。第2~12章主要讨论Java编程语言基础知识,涉及Java编程语言、数据处理、常用JDK应用与设计模式等内容。第13~29章主要讨论Android移动应用开发知识,首先讨论Android SDK中各种基本组件的应用;然后对Android应用中的一些常用功能开始进行讨论;*后创建一个完整的示例项目,讨论如何应用不同版本的图标、布局、语言等资源,并讨论应用发布所需要做的工作和注意事项。
本书内容安排合理,架构清晰,注重理论与实践相结合,适合作为零基础学习Android移动应用开发的初学者的教程,也适合作为有一定编程基础的程序员的参考用书。

目录:
第1章 导读    1
第2章 Java开发基础    4
2.1 安装JDK和NetBeans    4
2.2 第一个Java程序    6
2.2.1 语句与语句块    8
2.2.2 注释内容    9
2.3 保留字与标识符    10
2.4 基本数据类型    12
2.5 整数    13
2.5.1 算术运算    13
2.5.2 增量与减量运算    14
2.5.3 位运算    14
2.6 浮点数    16
2.7 类型转换    17
2.8 char类型    19
2.9 boolean类型    20
2.10 枚举类型    20
2.11 代码的组织    21
第3章 面向对象编程    23
3.1 类与对象    23
3.1.1 构造函数与对象释放    25
3.1.2 getter()和setter()方法    27
3.1.3 静态成员与静态初始化    28
3.2 方法    30
3.2.1 可变长参数    31
3.2.2 重载    31
3.3 继承    32
3.3.1 java.lang.Object类    34
3.3.2 扩展与重写    34
3.3.3 访问级别    36
3.3.4 instanceof运算符    37
3.3.5 抽象类与抽象方法    37
3.4 数据类型处理    39
3.4.1 基本数据类型与包装类    40
3.4.2 数据的传递    41
3.4.3 类型的动态处理    43
3.5 java.lang.Math类    44
3.6 java.util.Random类    45
第4章 接口    47
4.1 创建接口类型    47
4.2 实现接口    47
4.3 接口的继承    48
4.4 对象复制    50
4.4.1 实现Cloneable接口    50
4.4.2 实现Serializable接口    51
第5章 流程控制    54
5.1 比较运算符    54
5.2 if-else语句和 :运算符    54
5.3 switch语句    56
5.4 循环语句    58
5.4.1 for语句    58
5.4.2 while语句    59
5.4.3 do-while语句    60
5.4.4 break语句与标签    60
5.4.5 continue语句    61
5.5 异常处理    62
5.5.1 异常类    62
5.5.2 try-catch-finally语句    63
5.5.3 throw语句    64
5.5.4 throws关键字    64
5.5.5 try()语句结构    65
第6章 字符串    67
6.1 String类    67
6.1.1 字符串的运算与比较    67
6.1.2 常用方法    67
6.1.3 将字符串转换为其他类型    70
6.2 StringBuffer类    71
6.2.1 基本操作    71
6.2.2 添加内容    72
6.2.3 删除内容    72
6.2.4 查询    73
6.2.5 替换    73
6.2.6 反向排列    73
6.3 StringBuilder类    74
6.4 正则表达式    74
6.5 获取MD5和SHA-1编码    75
6.6 获取GUID    76
第7章 泛型    77
7.1 泛型类    77
7.2 泛型方法    78
7.3 泛型接口    79
7.4 泛型限制    79
第8章 数组与集合    82
8.1 数组    82
8.2 List接口及相关类型    84
8.3 Map接口及相关类型    86
第9章 日期与时间    89
9.1 传统的日期和时间处理方法    89
9.1.1 Date类    89
9.1.2 格式化日期和时间    90
9.1.3 Calendar类    91
9.1.4 TimeZone类    92
9.1.5 Locale类    93
9.2 使用java.time包    93
9.2.1 获取本地日期与时间    93
9.2.2 处理年、月、日数据    95
9.2.3 处理时区    95
9.3 封装CDateTime类    96
第10章 输入输出    103
10.1 文件与目录    103
10.2 文件的读写操作    104
10.2.1 流    104
10.2.2 读写文本内容    105
10.3 使用java.nio资源    107
第11章 多线程与定时器    109
11.1 线程    109
11.2 定时器    110
第12章 设计模式    112
12.1 策略模式    112
12.2 单件模式    115
12.3 访问者模式    116
第13章 Android应用开发基础    119
13.1 Android Studio的安装    119
13.2 项目创建与测试    120
13.2.1 使用AVD测试    122
13.2.2 使用真实设备测试    124
13.2.3 判断Android版本    124
13.3 再看Android Studio开发环境    127
13.3.1 项目资源的组织    127
13.3.2 代码字体设置    128
13.3.3 查看日志    128
13.4 第一次修改应用配置(隐藏标题栏)    129
13.5 Android应用的基本要素    131
第14章 Activity    132
14.1 基本应用    132
14.2 运行周期    135
14.3 Activity的启动与关闭    136
14.3.1 启动Activity    136
14.3.2 Activity返回栈    139
14.3.3 Activity的启动模式    140
14.4 数据传递    142
14.4.1 使用Intent    142
14.4.2 接收返回数据    144
14.4.3 Bundle(数据自动保存与载入)    147
14.5 Intent的更多应用    148
第15章 常用组件    151
15.1 按钮与事件响应    151
15.1.1 响应单击操作    153
15.1.2 响应长按操作并振动    154
15.1.3 响应触摸事件    156
15.2 文本组件    157
15.2.1 TextView    157
15.2.2 EditText    157
15.3 消息与对话框    158
15.3.1 Toast    159
15.3.2 AlertDialog    159
15.3.3 ProgressDialog    161
15.4 菜单    162
15.5 单选按钮    165
15.6 复选框    168
15.7 下拉列表    171
15.8 图像组件    177
15.9 列表    178
15.9.1 绑定列表数据    178
15.9.2 响应列表项单击    180
15.9.3 获取正确的项目索引    182
15.10 进度条    184
15.11 滑块    186
15.12 选择日期和时间对话框    188
15.13 更多组件    191
15.14 图像处理    192
15.14.1 Bitmap和Matrix类    193
15.14.2 缩放    193
15.14.3 旋转    195
15.14.4 扭曲    195
第16章 布局与容器    197
16.1 尺寸单位    197
16.2 线性布局    197
16.3 相对布局    201
16.4 ScrollView和HorizontalScrollView    204
16.5 搜索功能    204
16.6 自定义组件    206
16.6.1 创建布局    207
16.6.2 创建组件类    209
16.6.3 使用9-Patch图片    212
第17章 通知与服务    214
17.1 通知    214
17.1.1 创建简单的通知    214
17.1.2 响应通知操作    216
17.1.3 更多设置    217
17.2 服务    218
17.2.1 Service类    218
17.2.2 IntentService类    222
17.2.3 循环服务(使用AlarmManager)    224
第18章 广播    228
18.1 接收广播(判断网络状态)    228
18.2 发送广播    230
18.3 有序广播    232
18.4 本地广播    234
第19章 网络应用    236
19.1 配置IIS网站    236
19.2 获取网络资源    238
19.2.1 使用HttpURLConnection对象    240
19.2.2 读取文本内容(GET方式)    240
19.2.3 使用参数(GET方式)    242
19.2.4 使用POST方式    243
19.2.5 将获取的内容显示到TextView中    244
19.3 处理JSON数据    245
19.3.1 处理JSONObject对象    246
19.3.2 处理JSONArray对象    248
19.4 处理XML数据    249
19.5 将文件上传到服务器    252
19.5.1 准备接收服务器(ASP.NET)    252
19.5.2 上传文件    253
19.6 封装CHttp类    256
19.6.1 使用GET方式获取文本    256
19.6.2 使用POST方式获取文本    257
19.6.3 获取JSON数据    259
19.6.4 测试    261
第20章 保存数据    263
20.1 使用Context保存数据    263
20.1.1 保存文件    265
20.1.2 读取文件    266
20.2 使用SharedPreferences保存数据    266
20.2.1 保存数据    268
20.2.2 载入数据    269
第21章 SQLite数据库    270
21.1 数据库    270
21.1.1 打开与关闭数据库    272
21.1.2 SQLiteOpenHelper类    272
21.2 数据表与字段    276
21.2.1 字段类型    276
21.2.2 创建表    277
21.2.3 删除表    278
21.2.4 修改表结构    278
21.2.5 索引    279
21.3 添加记录    279
21.3.1 insert语句    279
21.3.2 参数    280
21.3.3 SQLiteDatabase.insert()方法    281
21.4 查询记录    282
21.4.1 select语句    282
21.4.2 SQLiteDatabase.rawQuery()方法    283
21.4.3 使用Cursor类读取数据    285
21.4.4 查询练习    286
21.5 修改记录    287
21.5.1 update语句    287
21.5.2 SQLiteDatabase.update()方法    287
21.6 删除记录    288
21.6.1 delete语句    288
21.6.2 SQLiteDatabase.delete()方法    288
21.7 高级查询    289
21.7.1 函数    289
21.7.2 排序    290
21.7.3 分组    291
21.8 主键与外键    292
21.8.1 创建“一对多”数据结构    292
21.8.2 join关键字    294
21.9 视图    295
21.10 使用DB Browser练习SQL语句    297
第22章 Android SDK定位功能    299
22.1 获取权限与基本位置信息    299
22.2 跟踪位置变化    303
22.3 获取一次最新位置信息    306
第23章 高德地图SDK    307
23.1 准备工作    307
23.2 封装RequestPermission ActivityBase类    312
23.3 定位    315
23.4 显示地图    319
23.5 小结    324
第24章 百度地图SDK    325
24.1 准备工作    325
24.2 定位    329
24.3 显示地图    332
第25章 传感器    338
25.1 传感器对象    338
25.2 加速计(制作水平仪)    339
25.3 陀螺仪    342
25.4 亮度传感器(控制相机闪光灯)    343
第26章 应用之间的数据传递    346
26.1 向其他应用提供数据 (ContentProvider)    346
26.1.1 访问内容的Uri    347
26.1.2 数据初始化——onCreate()方法    349
26.1.3 添加数据——insert()方法    349
26.1.4 更新数据——update()方法    350
26.1.5 删除数据——delete()方法    350
26.1.6 查询数据——query()方法    351
26.1.7 数据类型(MIME)——getType()方法    351
26.2 操作外部数据(ContentResolver)    352
26.3 路径处理    358
26.4 相机和图库    360
26.4.1 保存照片    364
26.4.2 读取照片    364
26.5 播放音频(极简音乐播放器)    366
26.6 播放视频    371
26.7 读取通讯录(打电话与发短信)    373
第27章 资源与本地化    378
27.1 资源应用限定符    378
27.2 应用图标    380
27.3 竖屏与横屏    381
27.4 语言    384
27.5 颜色    385
第28章 项目演示:迷你账本    387
28.1 数据库操作(CAccount类)    389
28.1.1 初始化    389
28.1.2 添加记录    391
28.1.3 删除记录    391
28.1.4 账目查询    391
28.1.5 账目统计    394
28.2 主界面    395
28.2.1 自定义账目显示组件    398
28.2.2 基本查询    401
28.2.3 账目删除    402
28.3 添加账目    403
28.4 查询    407
28.5 统计    412
28.6 其他工作    415
第29章 应用发布    416
29.1 创建Key与APK文件    416
29.2 发布应用的多个版本    419


前言: 前  言
无论是否有过编程的经历,相信你已经在关注Android应用开发。手机、平板电脑、车载设备等市场中,Android设备的占有率是无法撼动的,所以选择Android平台就是选择了一个巨大的移动应用市场。目标没这么大?没关系,给自己的Android设备开发一些应用也是非常有趣的。
软件开发是充满乐趣和挑战的工作,其中,至少需要掌握一种编程语言和相应的开发资源。在Android平台中,Java语言和Android SDK就是最基本的开发工具。
本书为所有需要进行Android应用开发的读者而准备,无论是编程新手,还是从其他平台转换到Android平台,本书都能帮你顺利进入Android的精彩世界。
本书特点
从技术点到应用开发
本书从基本的Java代码开始,逐渐介绍常用的JDK和Android SDK开发资源,并讨论了软件开发的一些基本方法,通过编程语言、功能介绍、开发流程和完整的项目,综合演示了Android应用开发的方方面面。
突出实用性
书中介绍了大量的Java和Android开发资源,如各种Android组件、SQLite数据库、传感器等方面的应用和开发,从基本的使用方法到功能特点的演示,详尽地展现了开发技术在项目中的综合应用。
精心组织,随时参考
从Java语言、JDK到Android SDK资源,从代码到结构,从技术应用到项目开发,从不同的角度精心组织内容,不但可以帮助读者循序渐进学习,而且在实际开发工作中也能够快速参考相关内容。
读者对象
本书面向Android平台开发者,帮助读者真正零基础起步。无论是初学者,还是正在开发Android应用的朋友,本书都能提供从Java语言、JDK到Android SDK等方面的参考和帮助。重要的是,读者可以从本书开始,迈向无限可能的移动应用开发世界。
如何阅读本书
本书包含了Java编程语言、常用的JDK和大量的Android SDK资源、SQLite数据库、高德地图和百度地图开发,以及项目的综合演示和发布等,第1章分别介绍了后面各章的内容。
Java部分(第2~12章)主要讨论Java编程语言和常用JDK资源的使用,包括数据类型及转换、数据运算、面向对象编程、数组与集合、日期与时间、设计模式等。对于Java初学者,可以从第2章开始,逐渐学习Java编程语言和JDK的应用,并掌握使用设计模式优化代码结构的基本方法;对于已经掌握Java的读者,可以再次熟悉这些知识,并在实际开发工作中随时参考相关内容。
Android部分(第13~29章)详细介绍了Android应用开发的方方面面,包括基本组件、布局、网络应用、SQLite数据库、传感器、高德地图和百度地图SDK的应用、项目综合演示和发布准备等内容。掌握了这些内容,就可以开发并发布实用的Android应用了;对于这部分内容。读者可以系统地学习,也可以在工作中随时参考。
进一步学习建议
通过本书的学习,读者应该能够掌握Java编程语言和Android应用的开发,如果感兴趣,还可以在本书的基础上深入学习更多、更有趣的开发技术和方法。
比如移动游戏的开发,虽然Android SDK中包含了一些图像和音频处理资源,但它们更加接近系统底层的实现。对于游戏开发,还有太多的工作要做,所以建议使用一些成熟的游戏开发框架,如Unity等。
勘误和支持
由于作者水平有限,书中难免会出现一些错误或不太合理的地方,而读者的批评和指正,正是我们共同进步的强大动力。可以将书中的错误或建议与作者直接交流,作者的邮箱是chydev@163.com。
致谢
感谢清华大学出版社编辑老师耐心的交流与指导,使得本书能够顺利地与读者见面。
感谢我的家人,他们为我创造了一个温暖的家、一个安心的工作环境。特别是我的孩子们,他们总是说:“爸爸在工作,我不打扰他。”这些正是我快乐生活和努力工作的力量源泉。
谨以本书献给我的家人,以及热爱软件开发的朋友!
曹化宇