欢迎访问学兔兔,学习、交流 分享 !

返回首页 |

O'Reilly精品图书系列 Android应用开发实战(原书第2版) (美)伊恩F. 达尔文(Ian F. Darwin) 著 胡训强,夏红梅,张文娟 译 2018年版

收藏
  • 大小:233.15 MB
  • 语言:中文版
  • 格式: PDF文档
  • 阅读软件: Adobe Reader
资源简介
O'Reilly精品图书系列 Android应用开发实战(原书第2版)
作者: (美)伊恩F. 达尔文(Ian F. Darwin) 著 胡训强,夏红梅,张文娟 译
出版时间: 2018年版
内容简介
本书内容来自于Android社区数十位一线优秀开发者,涵盖Android应用程序开发的方方面面,从GUI、图形图像、多媒体、数据持久化到各种通信方式、常用传感器等等内容无所不包,甚至还囊括了应用程序测试、国际化和面向非Java程序员的编程方式等内容,以及自然应用程序开发环境的搭建和程序的发布。无论你打算使用什么IDE,准备开发什么样的项目,都能从本书中找到适合自己的内容。每一节都是先提出问题,即本节内容所面向的程序应用背景,然后提出总体解决思路,最后再按步实施、解决问题,便于你参考解决实际开发问题。

本书对Android程序员在日常开发中容易混淆、迷茫、犯错、走弯路的种种问题做了深入解析,并给出了230多个经过测试的实用技巧,既能成为Android开发新手的入门指南,又能作为有经验开发者的案头工具书。

目录
目录

前言 1

第1章 入门 9

1.1 理解Android应用程序体系结构 9

1.2 理解Android Activity的生命周期 11

1.3 了解Android发行版本 13

1.4 学习Java语言 15

1.5 从命令行创建“Hello World”应用程序 16

1.6 用Apache Maven创建“Hello World”应用程序 20

1.7 为Android开发选择集成开发环境(IDE) 22

1.8 安装Android Studio 26

1.9 安装Platform Editions并保持SDK更新 28

1.10 用Android Studio创建“Hello World”应用程序 31

1.11 将Eclipse ADT项目转换成Android Studio项目 37

1.12 从Eclipse向Android Studio转换时保留历史记录 40

1.13 用Eclipse和Android Studio共同构建Android应用程序 42

1.14 安装带有AndMore的Eclipse(代替ADT) 44

1.15 用Eclipse创建“Hello World”应用程序 51

1.16 在Eclipse中安装Eclipse Marketplace Client 56

1.17 将项目从Eclipse ADT升级到Eclipse AndMore 59

1.18 用命令行ADB控制模拟器/设备 62

1.19 共享其他Eclipse项目中的Java类 64

1.20 引用库实现外围功能 66

1.21 通过兼容库在老设备上使用新功能 70

1.22 应用SDK示例帮助避免让人头疼的问题 72

1.23 从模拟器/Android设备上截图/截取视频 73

1.24 程序:一个简单的定时器示例 78

1.25 程序:Tipster, Android操作系统上的小费计算器 82

第2章 设计成功的应用程序 98

2.1 异常处理 101

2.2 运行时请求Android访问权限 104

2.3 以“单例”模式访问Android的Application对象 106

2.4 在用户旋转设备时保持数据 109

2.5 监控Android设备上的电池电量 111

2.6 在Android中创建闪屏 112

2.7 设计面向会议/野营/黑客马拉松/公共机构的应用程序 116

2.8 在Android应用程序中使用Google的分析工具 118

2.9 进行首次运行的偏好设置 120

2.10 格式化数字 122

2.11 用正确的复数形式进行格式化 126

2.12 格式化时间和日期进行显示 128

2.13 用Java 8的java.time API简化日期/时间计算 131

2.14 用键盘监听器控制输入 133

2.15 备份Android应用程序数据 136

2.16 用提示(Hint)代替工具小贴士 142

第3章 应用程序测试 144

3.1 针对测试设置Android虚拟设备 145

3.2 在大量设备上进行云测试 151

3.3 用Eclipse和JUnit进行测试 152

3.4 用Android Studio和JUnit进行测试 154

3.5 用Robolectric和JUnit 4进行测试 159

3.6 用ATSL、Espresso和JUnit 4进行测试 161

3.7 排查应用程序崩溃原因 165

3.8 用Log.d( )和LogCat进行调试 168

3.9 用Crash Reporting自动获取崩溃报告 169

3.10 针对现场错误或情况使用本地运行时应用程序日志 172

3.11 为测试重现Activity生命周期场景 176

3.12 利用严苛模式让应用程序保持简洁 180

3.13 用Android Lint进行静态代码测试 181

3.14 用Monkey程序进行动态测试 183

3.15 在AVD之间发送文本消息和通话 185

第4章 进程间/进程内通信 187

4.1 用Intent打开网页、电话号码本或其他应用程序 187

4.2 从视图中用电子邮件发送文本 189

4.3 发送带有附件的电子邮件 192

4.4 用Intent.putExtra( )发送字符串值 194

4.5 从子Activity向主Activity发回数据 195

4.6 当其他应用程序在屏幕上显示的同时让后台服务保持运行 198

4.7 发送/接收广播消息 200

4.8 在设备重启后启动服务 201

4.9 使用线程创建高可响应的应用程序 202

4.10 使用AsyncTask进行后台处理 203

4.11 利用Activity的线程队列和Handler在线程间发送消息 210

4.12 结合Android和HTML/JavaScript创建一个万年历应用程序 211

第5章 图形 218

5.1 使用自定义字体 218

5.2 用OpenGL ES绘制旋转正方体 221

5.3 为OpenGL旋转正方体添加控制 224

5.4 手绘光滑曲线 227

5.5 用Intent拍照 232

5.6 用android.media.Camera照相 234

5.7 用Google的条形码扫描器ZXing扫描条形码和二维码 238

5.8 用AndroidPlot显示图表和图形 240

5.9 使用Inkscape借助OpenClipArt.org创建Android启动器图标 244

5.10 使用Paint.NET借助OpenClipArt.org创建Android启动器图标 248

5.11 使用九宫格文件 254

5.12 使用Android RGraph创建HTML5图表 258

5.13 添加一个简单的光栅动画 262

5.14 用拇指和食指进行缩放 265

第6章 图形用户界面 268

6.1 理解和遵循用户界面准则 269

6.2 用原质化设计赋予应用程序良好外观 270

6.3 选择布局管理器(ViewGroup)排列组件 274

6.4 通过解耦视图与模型处理配置变化 275

6.5 处理动作栏 277

6.6 向动作栏添加共享动作 281

6.7 用Fragment API构建现代UI 285

6.8 创建按钮及其单击事件监听器 289

6.9 用图像按钮增强UI设计 290

6.10 使用FloatingActionButton 291

6.11 以多种不同方式编写事件监听器 294

6.12 使用复选框和单选按钮 298

6.13 使用卡片窗口部件 302

6.14 通过Spinner类提供下拉选择器 304

6.15 处理长按/长点事件 307

6.16 用TextView和EditText显示文本域 308

6.17 用属性和TextWatcher接口限制EditText的值 309

6.18 实现AutoCompleteTextView 311

6.19 使用SQLite数据库查询填充AutoCompleteTextView 313

6.20 将文本域转换为密码域 315

6.21 将软键盘上的回车键改为“下一个” 315

6.22 在Activity中处理键盘按键事件 318

6.23 让他们看星星:使用RatingBar 319

6.24 让视图晃动 323

6.25 提供触觉反馈 325

6.26 在TabView中的各个Activity之间切换 328

6.27 创建在两个Activity之间显示的载入界面 329

6.28 为布局添加带有圆角的边框 331

6.29 在Android中检测手势 333

6.30 创建一个简单的应用程序窗口小部件 340

第7章 GUI中的警告:菜单、对话框、Toast、

Snackbar和通知 344

7.1 用Toast和Snackbar向用户发出警告 344

7.2 自定义Toast的外观 346

7.3 创建和显示菜单 348

7.4 处理菜单项的选择 349

7.5 创建子菜单 350

7.6 创建弹出式/警告对话框 352

7.7 创建时间选择器窗口部件 353

7.8 针对选择创建iPhone风格的滚轮选择器 356

7.9 创建选项卡式对话框 358

7.10 创建进度对话框 361

7.11 创建带有按钮、图像和文本的自定义对话框 362

7.12 创建可重用的“关于对话框”类 364

7.13 在状态栏中创建通知 368

第8章 其他GUI组件:列表和视图 373

8.1 用RecyclerView构建基于列表的应用程序 373

8.2 用ListView构建基于列表的应用程序 376

8.3 为ListView创建“无数据”视图 381

8.4 创建带有图像和文本的高级ListView 382

8.5 在ListView中使用分组标题 386

8.6 让ListView始终处于用户的关注点上 390

8.7 编写自定义列表适配器 391

8.8 利用SearchView在ListView中查找数据 394

8.9 处理方向变化:从ListView数据值到全局模式中的图表绘制 396

第9章 多媒体 402

9.1 播放YouTube视频 402

9.2 利用MediaRecorder录制视频 403

9.3 使用Android的人脸检测功能 406

9.4 播放音频文件 409

9.5 在没有交互的情况下播放音频 411

9.6 使用语音文本转换 412

9.7 利用文本语音转换让设备发声 414

第10章 数据持久化 416

10.1 读写内存储器和外存储器中的文件 416

10.2 获取文件和文件夹信息 421

10.3 读取应用程序自带而非文件系统中的文件 426

10.4 获取SD卡的存储空间信息 427

10.5 提供偏好设置Activity 428

10.6 检查共享偏好设置的一致性 433

10.7 在Android应用程序中使用SQLite数据库 435

10.8 在SQLite数据库上执行高级文本检索 438

10.9 处理SQLite中的日期 443

10.10 将非SQL数据对外暴露为SQL游标 445

10.11 用CursorLoader显示数据 448

10.12 利用JSONObject解析JSON 451

10.13 利用DOM API解析XML文档 453

10.14 利用ContentProvider存储和获取数据 455

10.15 编写一个ContentProvider 456

10.16 通过联系人内容提供器添加联系人 460

10.17 利用ContentProvider读取联系人数据 462

10.18 实现拖放 464

10.19 通过FileProvider共享文件 468

10.20 利用SyncAdapter把SQLite中的数据备份到云端 473

10.21 利用Google Firebase将数据存放到云端 482

第11章 电话应用程序 487

11.1 来电处理 487

11.2 处理去电呼叫 490

11.3 拨打电话 494

11.4 发送单段式或多段式短信 495

11.5 接收短信 498

11.6 利用模拟器控制台向模拟器发送短信 499

11.7 利用Android的TelephonyManager获取设备信息 500

第12章 网络应用程序 511

12.1 借助URLConnection利用RESTful Web服务 512

12.2 借助Volley利用RESTful Web服务 515

12.3 利用Google Cloud Messaging的“推送消息”向应用程序发出

通知消息 517

12.4 利用正则表达式从非结构化文本中提取信息 525

12.5 利用ROME解析RSS/Atom订阅内容 526

12.6 利用MD5加密纯文本 531

12.7 将文本转换为超链接 531

12.8 利用WebView访问网页 532

12.9 自定义WebView 533

12.10 编写进程间通信服务 534

第13章 游戏和动画 539

13.1 利用flixel-gdx制作Android游戏 540

13.2 利用AndEngine制作Android游戏 544

13.3 处理与时间相关的键盘输入 549

第14章 社交网络 551

14.1 利用OAUTH2对用户进行身份认证 551

14.2 利用HTTP集成社交网络 555

14.3 利用HTML或JSON加载用户的Twitter时间线 557

第15章 定位和地图应用程序 559

15.1 获取位置信息 559

15.2 在应用程序内获取GPS信息 561

15.3 在设备上模拟GPS坐标 563

15.4 使用地理编码和逆向地理编码 565

15.5 为使用Google Maps API V2进行开发做好准备 566

15.6 使用Google Maps API V2 571

15.7 利用OpenStreetMap显示地图数据 576

15.8 利用OpenStreetMap地图创建覆盖图层 578

15.9 在OpenStreetMap地图上使用比例尺 581

15.10 在OpenStreetMap覆盖图层上处理触摸事件 582

15.11 利用OpenStreetMap获取定位更新 584

第16章 加速计 588

16.1 检查传感器是否存在 588

16.2 利用加速计检测晃动 589

16.3 检测设备正面朝上还是朝下 593

16.4 读取温度传感器 594

第17章 蓝牙 595

17.1 启用蓝牙并让设备可被发现 595

17.2 连接启用了蓝牙的设备 597

17.3 接受来自蓝牙设备的连接 599

17.4 实现发现蓝牙设备的功能 600

第18章 系统和设备控制 602

18.1 获取手机的网络/连接信息 602

18.2 从应用程序清单文件中获取信息 603

18.3 将来电通知改为静音、振动或普通铃声 604

18.4 复制文本并从剪切板中获取文本 606

18.5 使用基于LED的通知 606

18.6 让设备振动 607

18.7 确定指定的应用程序是否正在运行 608

第19章 世上并非只有Java:其他编程语言和框架 609

19.1 了解跨平台解决方案 610

19.2 在应用程序中执行Shell命令 611

19.3 利用JNI在NDK上运行原生C/C++代码 613

19.4 Android脚本编程层SL4A入门 618

19.5 在SL4A中创建警告消息 620

19.6 利用SL4A获取Google文档并在ListView中显示 624

19.7 在二维码中共享SL4A脚本 626

19.8 通过JavaScript在WebView中使用原生的手机功能 628

19.9 利用Xamarin构建跨平台应用程序 630

19.10 利用PhoneGap/Cordova构建跨平台应用程序 634

第20章 世上并非只有英语:字符串和国际化 639

20.1 国际化应用程序中的文本 640

20.2 查找和翻译字符串 643

20.3 处理strings.xml中的细微差别 644

第21章 打包、部署及发布/出售应用程序 650

21.1 创建签名证书并用其对应用程序签名 650

21.2 通过Google Play应用商店发布应用程序 653

21.3 通过其他应用商店发布应用程序 655

21.4 利用AdMob让你的应用程序赚钱 656

21.5 利用ProGuard进行混淆和优化 662

21.6 让应用程序驻留在你自己的服务器上 664

21.7 创建“自行更新”的应用程序 666

21.8 为Google Play应用商店中其他已发布的应用程序提供链接 668
下载地址