Android Studio开发实战:从零基础到App上线(第3版)

Android Studio开发实战:从零基础到App上线(第3版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2022-10
版次: 3
ISBN: 9787302617822
定价: 148.80
装帧: 其他
开本: 16开
纸张: 胶版纸
23人买过
  • 本书是一部Android开发的实战教程,由浅入深、由基础到高级,带领读者一步一步走进App开发的神奇世界。全书共分为20章。其中,前10章是基础部分,主要讲解Android Studio的环境搭建、App开发的各种常用控件、App开发的四大组件、App的数据存储方式、如何打造App的安装包;后10章是进阶部分,主要讲解App开发的事件交互、动画特效、网络通信、多媒体、手机阅读、感知定位、物联网、智能语音、机器视觉、在线直播等。书中在讲解知识点的同时给出了大量实战范例,方便读者迅速将所学的知识运用到实际开发中。通过本书的学习,读者不仅能够掌握3类主流App的基本开发技术,包括购物App(电子商务)、聊天App(即时通信)、娱乐App(短视频分享),还能够学会开发一些趣味应用,包括计算器、记账本、抠图工具、动感影集、电子阅读、附近交友、遥控小车、语音问答、人脸识别、视频通话等。 本书适用于Android开发的广大从业者、有志于转型App开发的程序员、App开发的业余爱好者,也可作为大中专院校与培训机构的Android课程教材。 欧阳燊  

    资深软件开发专家,有14年以上软件开发经验,熟悉C/C  、Java及相关软件架构,从事Android开发8年以上,有丰富的Android开发实战经验。已出版畅销书《Android Studio开发实战:从零基础到App上线》《Kotlin从零到精通Android开发》等。 第1章  Android开发环境搭建 1

    1.1  Android开发简介 1

    1.1.1  Android的发展历程 1

    1.1.2  Android Studio的发展历程 2

    1.2  搭建Android Studio开发环境 2

    1.2.1  计算机配置要求 2

    1.2.2  安装Android Studio 3

    1.2.3  下载Android的SDK 6

    1.3  创建并编译App工程 7

    1.3.1  创建新项目 7

    1.3.2  导入已有的工程 9

    1.3.3  编译App工程 10

    1.4  运行和调试App 11

    1.4.1  创建内置模拟器 11

    1.4.2  在模拟器上运行App 14

    1.4.3  观察App的运行日志 15

    1.5  小结 16

    1.6  动手练习 16

    第2章  Android App开发基础 17

    2.1  App的开发特点 17

    2.1.1  App的运行环境 17

    2.1.2  App的开发语言 19

    2.1.3  App连接的数据库 22

    2.2  App的工程结构 23

    2.2.1  App工程目录结构 23

    2.2.2  编译配置文件build.gradle 24

    2.2.3  运行配置文件

    AndroidManifest.xml 26

    2.3  App的设计规范 27

    2.3.1  界面设计与代码逻辑 28

    2.3.2  利用XML标记描绘应用界面 29

    2.3.3  使用Java代码书写程序逻辑 30

    2.4  App的活动页面 31

    2.4.1  创建新的App页面 31

    2.4.2  快速生成页面源码 33

    2.4.3  跳转到另一个页面 34

    2.5  小结 35

    2.6  动手练习 36

    第3章  简单控件 37

    3.1  文本显示 37

    3.1.1  设置文本的内容 37

    3.1.2  设置文本的大小 38

    3.1.3  设置文本的颜色 40

    3.2  视图基础 42

    3.2.1  设置视图的宽和高 42

    3.2.2  设置视图的间距 44

    3.2.3  设置视图的对齐方式 45

    3.3  常用布局 46

    3.3.1  线性布局LinearLayout 46

    3.3.2  相对布局RelativeLayout 49

    3.3.3  网格布局GridLayout 51

    3.3.4  滚动视图ScrollView 52

    3.4  按钮触控 53

    3.4.1  按钮控件Button 53

    3.4.2  点击事件和长按事件 55

    3.4.3  禁用与恢复按钮 56

    3.5  图像显示 58

    3.5.1  图像视图ImageView 58

    3.5.2  图像按钮ImageButton 60

    3.5.3  同时展示文本与图像 61

    3.6  实战项目:计算器 62

    3.6.1  需求描述 62

    3.6.2  界面设计 62

    3.6.3  关键代码 63

    3.7  小结 65

    3.8  动手练习 65

    第4章  常用组件 66

    4.1  启停活动页面 66

    4.1.1  Activity的启动和结束 66

    4.1.2  Activity的生命周期 67

    4.1.3  Activity的启动模式 70

    4.2  在活动之间传递消息 73

    4.2.1  显式Intent和隐式Intent 73

    4.2.2  普通的活动数据交互 75

    4.2.3  改进后的活动数据交互 78

    4.3  收发应用广播 80

    4.3.1  收发标准广播 80

    4.3.2  收发有序广播 83

    4.3.3  收发静态广播 84

    4.3.4  定时管理器AlarmManager 86

    4.4  操作后台服务 89

    4.4.1  服务的启动和停止 89

    4.4.2  服务的绑定与解绑 92

    4.4.3  活动与服务之间的交互 94

    4.5  小结 96

    4.6  动手练习 96

    第5章  中级控件 97

    5.1  图形定制 97

    5.1.1  图形Drawable 97

    5.1.2  形状图形 98

    5.1.3  九宫格图片 101

    5.1.4  状态列表图形 102

    5.2  选择按钮 103

    5.2.1  复选框CheckBox 103

    5.2.2  开关按钮Switch 105

    5.2.3  单选按钮RadioButton 106

    5.3  文本输入 108

    5.3.1  编辑框EditText 108

    5.3.2  焦点变更监听器 110

    5.3.3  文本变化监听器 111

    5.4  对话框 113

    5.4.1  提醒对话框AlertDialog 113

    5.4.2  日期对话框DatePickerDialog 115

    5.4.3  时间对话框TimePickerDialog 116

    5.5  实战项目:找回密码 117

    5.5.1  需求描述 117

    5.5.2  界面设计 118

    5.5.3  关键代码 119

    5.6  小结 121

    5.7  动手练习 121

    第6章  数据存储 122

    6.1  键值对 122

    6.1.1  共享参数的用法 122

    6.1.2  实现记住密码功能 123

    6.1.3  更安全的数据仓库 124

    6.2  数据库 126

    6.2.1  SQL的基本语法 127

    6.2.2  数据库管理器

    SQLiteDatabase 129

    6.2.3  数据库帮助器

    SQLiteOpenHelper 130

    6.2.4  优化记住密码功能 133

    6.3  存储卡 135

    6.3.1  私有存储空间与公共存储

    空间 135

    6.3.2  在存储卡上读写文件 136

    6.3.3  运行时动态申请权限 139

    6.4  应用组件Application 142

    6.4.1  Application的生命周期 142

    6.4.2  利用Application操作全局

    变量 143

    6.4.3  避免方法数过多的问题 144

    6.4.4  利用Room简化数据库操作 145

    6.5  共享数据 148

    6.5.1  通过ContentProvider封装

    数据 148

    6.5.2  通过ContentResolver访问

    数据 151

    6.5.3  利用ContentResolver读写

    联系人 153

    6.5.4  利用ContentObserver监听

    短信 154

    6.6  实战项目:购物车 156

    6.6.1  需求描述 156

    6.6.2  界面设计 158

    6.6.3  关键代码 159

    6.7  小结 163

    6.8  动手练习 163

    第7章  高级控件 164

    7.1  下拉框 164

    7.1.1  下拉框控件Spinner 164

    7.1.2  数组适配器ArrayAdapter 166

    7.1.3  简单适配器SimpleAdapter 166

    7.2  列表类视图 168

    7.2.1  基本适配器BaseAdapter 168

    7.2.2  列表视图ListView 170

    7.2.3  网格视图GridView 174

    7.3  翻页类视图 176

    7.3.1  翻页视图ViewPager 176

    7.3.2  翻页标签栏PagerTabStrip 179

    7.3.3  简单的启动引导页 180

    7.4  碎片Fragment 183

    7.4.1  碎片的静态注册 183

    7.4.2  碎片的动态注册 185

    7.4.3  改进的启动引导页 188

    7.5  实战项目:记账本 190

    7.5.1  需求描述 190

    7.5.2  界面设计 191

    7.5.3  关键代码 192

    7.6  小结 195

    7.7  动手练习 195

    第8章  自定义控件 196

    8.1  视图的构建过程 196

    8.1.1  视图的构造方法 196

    8.1.2  视图的测量方法 199

    8.1.3  视图的绘制方法 202

    8.2  改造已有的控件 205

    8.2.1  自定义月份选择器 205

    8.2.2  给翻页标签栏添加新属性 206

    8.2.3  不滚动的列表视图 208

    8.3  推送消息通知 210

    8.3.1  通知推送Notification 210

    8.3.2  通知渠道NotificationChannel 213

    8.3.3  推送服务到前台 215

    8.3.4  仿微信的悬浮通知 216

    8.4  通过持续绘制实现简单动画 221

    8.4.1  Handler的延迟机制 221

    8.4.2  重新绘制视图界面 222

    8.4.3  自定义饼图动画 224

    8.5  实战项目:广告轮播 227

    8.5.1  需求描述 227

    8.5.2  界面设计 227

    8.5.3  关键代码 228

    8.6  小结 231

    8.7  动手练习 231

    第9章  组合控件 232

    9.1  底部标签栏 232

    9.1.1  利用BottomNavigationView实现

    底部标签栏 232

    9.1.2  自定义标签按钮 236

    9.1.3  结合RadioGroup和ViewPager

    自定义底部标签栏 238

    9.2  顶部导航栏 241

    9.2.1  工具栏Toolbar 241

    9.2.2  溢出菜单OverflowMenu 242

    9.2.3  标签布局TabLayout 244

    9.3  增强型列表 246

    9.3.1  循环视图RecyclerView 247

    9.3.2  布局管理器LayoutManager 249

    9.3.3  动态更新循环视图 252

    9.4  升级版翻页 254

    9.4.1  下拉刷新布局

    SwipeRefreshLayout 254

    9.4.2  第二代翻页视图ViewPager2 256

    9.4.3  给ViewPager2集成标签布局 259

    9.5  实战项目:电商首页 261

    9.5.1  需求描述 261

    9.5.2  界面设计 262

    9.5.3  关键代码 263

    9.6  小结 264

    9.7  动手练习 264

    第10章  打造安装包 265

    10.1  应用打包 265

    10.1.1  导出APK安装包 265

    10.1.2  制作App图标 267

    10.1.3  给APK瘦身 268

    10.2  规范处理 271

    10.2.1  版本设置 271

    10.2.2  发布模式 272

    10.2.3  多渠道打包 274

    10.3  安全加固 276

    10.3.1  反编译 276

    10.3.2  代码混淆 278

    10.3.3  第三方加固及重签名 279

    10.4  小结 280

    10.5  动手练习 280

    第11章  事件交互 281

    11.1  按键事件 281

    11.1.1  检测软键盘 281

    11.1.2  检测物理按键 283

    11.1.3  接管返回按键 284

    11.2  触摸事件 285

    11.2.1  手势事件的分发流程 285

    11.2.2  接管手势事件处理 289

    11.2.3  跟踪滑动轨迹实现手写签名 292

    11.3  根据触摸行为辨别手势动作 293

    11.3.1  区分点击和长按动作 293

    11.3.2  识别手势滑动的方向 295

    11.3.3  辨别缩放与旋转手势 297

    11.4  手势冲突处理 300

    11.4.1  上下滚动与左右滑动的冲突

    处理 300

    11.4.2  内部滑动与翻页滑动的冲突

    处理 302

    11.4.3  正常下拉与下拉刷新的冲突

    处理 306

    11.5  实战项目:仿美图秀秀的抠图工具 309

    11.5.1  需求描述 309

    11.5.2  功能分析 309

    11.5.3  效果展示 310

    11.6  小结 311

    11.7  动手练习 311

    第12章  动画特效 312

    12.1  帧动画 312

    12.1.1  帧动画的实现 312

    12.1.2  显示动图特效 314

    12.1.3  淡入淡出动画 317

    12.2  补间动画 318

    12.2.1  补间动画的种类 318

    12.2.2  补间动画的原理 322

    12.2.3  集合动画 324

    12.3  属性动画 325

    12.3.1  常规的属性动画 325

    12.3.2  属性动画组合 328

    12.3.3  插值器和估值器 329

    12.3.4  利用估值器实现打赏动画 332

    12.4  遮罩动画及滚动器 335

    12.4.1  画布的绘图层次 335

    12.4.2  实现百叶窗动画 338

    12.4.3  利用滚动器实现平滑翻页 342

    12.5  实战项目:仿手机QQ的动感影集 344

    12.5.1  需求描述 345

    12.5.2  功能分析 346

    12.5.3  效果展示 349

    12.6  小结 350

    12.7  动手练习 350

    第13章  网络通信 351

    13.1  多线程 351

    13.1.1  分线程通过Handler操作

    界面 351

    13.1.2  通过runOnUiThread快速操纵

    界面 354

    13.1.3  工作管理器WorkManager 356

    13.2  HTTP访问 358

    13.2.1  移动数据格式JSON 359

    13.2.2  通过okhttp调用HTTP接口 361

    13.2.3  使用okhttp下载和上传文件 365

    13.3  图片加载 368

    13.3.1  使用Glide加载网络图片 369

    13.3.2  利用Glide实现图片的三级

    缓存 371

    13.3.3  使用Glide加载特殊图像 373

    13.4  即时通信 375

    13.4.1  通过SocketIO传输文本

    消息 375

    13.4.2  通过SocketIO传输图片

    消息 378

    13.4.3  利用WebSocket传输消息 380

    13.5  实战项目:仿微信的私聊和群聊 383

    13.5.1  需求描述 383

    13.5.2  功能分析 384

    13.5.3  效果展示 390

    13.6  小结 393

    13.7  动手练习 393

    第14章  多媒体 394

    14.1  音频录播 394

    14.1.1  使用系统录音机录制音频 394

    14.1.2  利用MediaPlayer播放音频 395

    14.1.3  利用MediaRecorder录制

    音频 398

    14.2  传统摄制 399

    14.2.1  使用系统相机拍摄照片 399

    14.2.2  使用系统摄像机录制视频 401

    14.2.3  利用视频视图与媒体控制条

    播放视频 403

    14.2.4  截取视频的某帧画面 405

    14.3  增强摄制 407

    14.3.1  使用CameraX拍照 407

    14.3.2  使用CameraX录像 411

    14.3.3  新型播放器ExoPlayer 413

    14.4  实战项目:仿抖音的短视频分享 416

    14.4.1  需求描述 417

    14.4.2  功能分析 418

    14.4.3  效果展示 421

    14.5  小结 422

    14.6  动手练习 422

    第15章  手机阅读 423

    15.1  浏览网页 423

    15.1.1  打开本地网页 423

    15.1.2  网页浏览器 425

    15.1.3  浏览EPUB文件 432

    15.2  浏览PDF文件 435

    15.2.1  PDF文件渲染器 435

    15.2.2  实现平滑翻书效果 437

    15.2.3  实现卷曲翻书动画 439

    15.3  浏览Office文档 444

    15.3.1  利用POI库浏览Word和

    Excel文档 445

    15.3.2  结合前后端浏览PPT文档 447

    15.3.3  利用TBS浏览各种文档 449

    15.4  JNI开发 451

    15.4.1  NDK环境搭建 451

    15.4.2  创建JNI接口 454

    15.4.3  JNI实现加解密 457

    15.4.4  采取CMake编译方式 459

    15.5  实战项目:笔墨飘香之电子书架 462

    15.5.1  需求描述 462

    15.5.2  功能分析 463

    15.5.3  效果展示 466

    15.6  小结 467

    15.7  动手练习 468

    第16章  感知定位 469

    16.1  传感器 469

    16.1.1  传感器的种类 469

    16.1.2  摇一摇——加速度传感器 471

    16.1.3  指南针——磁场传感器 472

    16.1.4  计步器、感光器和陀螺仪 474

    16.2  基础定位 476

    16.2.1  开启定位功能 476

    16.2.2  获取定位信息 478

    16.2.3  根据经纬度查找详细地址 482

    16.2.4  全球卫星导航系统 483

    16.3  地图导航 486

    16.3.1  集成腾讯地图 486

    16.3.2  显示地图面板 488

    16.3.3  获取地点信息 490

    16.3.4  规划导航路线 492

    16.4  实战项目:仿微信的附近的人 496

    16.4.1  需求描述 496

    16.4.2  功能分析 497

    16.4.3  效果展示 500

    16.5  小结 501

    16.6  动手练习 502

    第17章  物联网 503

    17.1  短距离通信 503

    17.1.1  WiFi管理器 503

    17.1.2  NFC近场通信 506

    17.1.3  红外遥控 511

    17.2  传统蓝牙 515

    17.2.1  蓝牙技术的发展历程 515

    17.2.2  蓝牙设备配对 515

    17.2.3  点对点蓝牙通信 521

    17.3  低功耗蓝牙 526

    17.3.1  扫描BLE设备 526

    17.3.2  发送BLE广播 531

    17.3.3  通过主从BLE实现聊天

    应用 533

    17.4  实战项目:自动驾驶的智能小车 538

    17.4.1  需求描述 539

    17.4.2  功能分析 539

    17.4.3  效果展示 543

    17.5  小结 544

    17.6  动手练习 544

    第18章  智能语音 545

    18.1  原生语音处理 545

    18.1.1  系统自带的语音引擎 545

    18.1.2  文字转语音 547

    18.1.3  中文转拼音 549

    18.2  在线语音处理 551

    18.2.1  原始音频录播 552

    18.2.2  在线语音合成 554

    18.2.3  在线语音识别 558

    18.3  基于机器学习的语音推断 561

    18.3.1  TensorFlow简介 561

    18.3.2  TensorFlow Lite 563

    18.3.3  从语音中识别指令 564

    18.4  实战项目:你问我答之小小机器人 566

    18.4.1  需求描述 566

    18.4.2  功能分析 567

    18.4.3  效果展示 572

    18.5  小结 574

    18.6  动手练习 574

    第19章  机器视觉 575

    19.1  简单图像识别 575

    19.1.1  扫描二维码 575

    19.1.2  扫描识别文本 578

    19.1.3  识别图像中的文档 582

    19.2  人脸识别 583

    19.2.1  人脸检测 584

    19.2.2  人脸比对 585

    19.2.3  活体检测 588

    19.3  人像进阶 590

    19.3.1  人像抠图 590

    19.3.2  背景替换 592

    19.3.3  笑脸捕捉 594

    19.4  实战项目:寻人神器之智慧天眼 596

    19.4.1  需求描述 597

    19.4.2  功能分析 598

    19.4.3  效果展示 599

    19.5  小结 601

    19.6  动手练习 601

    第20章  在线直播 602

    20.1  搭建WebRTC的服务端 602

    20.1.1  WebRTC的系统架构 602

    20.1.2  搭建信令服务器 604

    20.1.3  搭建穿透服务器 606

    20.2  给App集成WebRTC 608

    20.2.1  引入WebRTC开源库 608

    20.2.2  实现WebRTC的发起方 611

    20.2.3  实现WebRTC的接收方 614

    20.3  实战项目:仿微信的视频通话 616

    20.3.1  需求描述 616

    20.3.2  功能分析 617

    20.3.3  效果展示 621

    20.4  实战项目:仿拼多多的直播带货 621

    20.4.1  需求描述 622

    20.4.2  功能分析 622

    20.4.3  效果展示 627

    20.5  小结 629

    20.6  动手练习 629

    附录A  移动互联网行业的新技术 

    发展简表 630

    附录B  Android各版本的新增 

    功能简表 632

    附录C  Android常用开发库说明简表 634

    附录D  移动开发专业术语索引 636

    附录E  本书的服务端程序说明 639
  • 内容简介:
    本书是一部Android开发的实战教程,由浅入深、由基础到高级,带领读者一步一步走进App开发的神奇世界。全书共分为20章。其中,前10章是基础部分,主要讲解Android Studio的环境搭建、App开发的各种常用控件、App开发的四大组件、App的数据存储方式、如何打造App的安装包;后10章是进阶部分,主要讲解App开发的事件交互、动画特效、网络通信、多媒体、手机阅读、感知定位、物联网、智能语音、机器视觉、在线直播等。书中在讲解知识点的同时给出了大量实战范例,方便读者迅速将所学的知识运用到实际开发中。通过本书的学习,读者不仅能够掌握3类主流App的基本开发技术,包括购物App(电子商务)、聊天App(即时通信)、娱乐App(短视频分享),还能够学会开发一些趣味应用,包括计算器、记账本、抠图工具、动感影集、电子阅读、附近交友、遥控小车、语音问答、人脸识别、视频通话等。 本书适用于Android开发的广大从业者、有志于转型App开发的程序员、App开发的业余爱好者,也可作为大中专院校与培训机构的Android课程教材。
  • 作者简介:
    欧阳燊  

    资深软件开发专家,有14年以上软件开发经验,熟悉C/C  、Java及相关软件架构,从事Android开发8年以上,有丰富的Android开发实战经验。已出版畅销书《Android Studio开发实战:从零基础到App上线》《Kotlin从零到精通Android开发》等。
  • 目录:
    第1章  Android开发环境搭建 1

    1.1  Android开发简介 1

    1.1.1  Android的发展历程 1

    1.1.2  Android Studio的发展历程 2

    1.2  搭建Android Studio开发环境 2

    1.2.1  计算机配置要求 2

    1.2.2  安装Android Studio 3

    1.2.3  下载Android的SDK 6

    1.3  创建并编译App工程 7

    1.3.1  创建新项目 7

    1.3.2  导入已有的工程 9

    1.3.3  编译App工程 10

    1.4  运行和调试App 11

    1.4.1  创建内置模拟器 11

    1.4.2  在模拟器上运行App 14

    1.4.3  观察App的运行日志 15

    1.5  小结 16

    1.6  动手练习 16

    第2章  Android App开发基础 17

    2.1  App的开发特点 17

    2.1.1  App的运行环境 17

    2.1.2  App的开发语言 19

    2.1.3  App连接的数据库 22

    2.2  App的工程结构 23

    2.2.1  App工程目录结构 23

    2.2.2  编译配置文件build.gradle 24

    2.2.3  运行配置文件

    AndroidManifest.xml 26

    2.3  App的设计规范 27

    2.3.1  界面设计与代码逻辑 28

    2.3.2  利用XML标记描绘应用界面 29

    2.3.3  使用Java代码书写程序逻辑 30

    2.4  App的活动页面 31

    2.4.1  创建新的App页面 31

    2.4.2  快速生成页面源码 33

    2.4.3  跳转到另一个页面 34

    2.5  小结 35

    2.6  动手练习 36

    第3章  简单控件 37

    3.1  文本显示 37

    3.1.1  设置文本的内容 37

    3.1.2  设置文本的大小 38

    3.1.3  设置文本的颜色 40

    3.2  视图基础 42

    3.2.1  设置视图的宽和高 42

    3.2.2  设置视图的间距 44

    3.2.3  设置视图的对齐方式 45

    3.3  常用布局 46

    3.3.1  线性布局LinearLayout 46

    3.3.2  相对布局RelativeLayout 49

    3.3.3  网格布局GridLayout 51

    3.3.4  滚动视图ScrollView 52

    3.4  按钮触控 53

    3.4.1  按钮控件Button 53

    3.4.2  点击事件和长按事件 55

    3.4.3  禁用与恢复按钮 56

    3.5  图像显示 58

    3.5.1  图像视图ImageView 58

    3.5.2  图像按钮ImageButton 60

    3.5.3  同时展示文本与图像 61

    3.6  实战项目:计算器 62

    3.6.1  需求描述 62

    3.6.2  界面设计 62

    3.6.3  关键代码 63

    3.7  小结 65

    3.8  动手练习 65

    第4章  常用组件 66

    4.1  启停活动页面 66

    4.1.1  Activity的启动和结束 66

    4.1.2  Activity的生命周期 67

    4.1.3  Activity的启动模式 70

    4.2  在活动之间传递消息 73

    4.2.1  显式Intent和隐式Intent 73

    4.2.2  普通的活动数据交互 75

    4.2.3  改进后的活动数据交互 78

    4.3  收发应用广播 80

    4.3.1  收发标准广播 80

    4.3.2  收发有序广播 83

    4.3.3  收发静态广播 84

    4.3.4  定时管理器AlarmManager 86

    4.4  操作后台服务 89

    4.4.1  服务的启动和停止 89

    4.4.2  服务的绑定与解绑 92

    4.4.3  活动与服务之间的交互 94

    4.5  小结 96

    4.6  动手练习 96

    第5章  中级控件 97

    5.1  图形定制 97

    5.1.1  图形Drawable 97

    5.1.2  形状图形 98

    5.1.3  九宫格图片 101

    5.1.4  状态列表图形 102

    5.2  选择按钮 103

    5.2.1  复选框CheckBox 103

    5.2.2  开关按钮Switch 105

    5.2.3  单选按钮RadioButton 106

    5.3  文本输入 108

    5.3.1  编辑框EditText 108

    5.3.2  焦点变更监听器 110

    5.3.3  文本变化监听器 111

    5.4  对话框 113

    5.4.1  提醒对话框AlertDialog 113

    5.4.2  日期对话框DatePickerDialog 115

    5.4.3  时间对话框TimePickerDialog 116

    5.5  实战项目:找回密码 117

    5.5.1  需求描述 117

    5.5.2  界面设计 118

    5.5.3  关键代码 119

    5.6  小结 121

    5.7  动手练习 121

    第6章  数据存储 122

    6.1  键值对 122

    6.1.1  共享参数的用法 122

    6.1.2  实现记住密码功能 123

    6.1.3  更安全的数据仓库 124

    6.2  数据库 126

    6.2.1  SQL的基本语法 127

    6.2.2  数据库管理器

    SQLiteDatabase 129

    6.2.3  数据库帮助器

    SQLiteOpenHelper 130

    6.2.4  优化记住密码功能 133

    6.3  存储卡 135

    6.3.1  私有存储空间与公共存储

    空间 135

    6.3.2  在存储卡上读写文件 136

    6.3.3  运行时动态申请权限 139

    6.4  应用组件Application 142

    6.4.1  Application的生命周期 142

    6.4.2  利用Application操作全局

    变量 143

    6.4.3  避免方法数过多的问题 144

    6.4.4  利用Room简化数据库操作 145

    6.5  共享数据 148

    6.5.1  通过ContentProvider封装

    数据 148

    6.5.2  通过ContentResolver访问

    数据 151

    6.5.3  利用ContentResolver读写

    联系人 153

    6.5.4  利用ContentObserver监听

    短信 154

    6.6  实战项目:购物车 156

    6.6.1  需求描述 156

    6.6.2  界面设计 158

    6.6.3  关键代码 159

    6.7  小结 163

    6.8  动手练习 163

    第7章  高级控件 164

    7.1  下拉框 164

    7.1.1  下拉框控件Spinner 164

    7.1.2  数组适配器ArrayAdapter 166

    7.1.3  简单适配器SimpleAdapter 166

    7.2  列表类视图 168

    7.2.1  基本适配器BaseAdapter 168

    7.2.2  列表视图ListView 170

    7.2.3  网格视图GridView 174

    7.3  翻页类视图 176

    7.3.1  翻页视图ViewPager 176

    7.3.2  翻页标签栏PagerTabStrip 179

    7.3.3  简单的启动引导页 180

    7.4  碎片Fragment 183

    7.4.1  碎片的静态注册 183

    7.4.2  碎片的动态注册 185

    7.4.3  改进的启动引导页 188

    7.5  实战项目:记账本 190

    7.5.1  需求描述 190

    7.5.2  界面设计 191

    7.5.3  关键代码 192

    7.6  小结 195

    7.7  动手练习 195

    第8章  自定义控件 196

    8.1  视图的构建过程 196

    8.1.1  视图的构造方法 196

    8.1.2  视图的测量方法 199

    8.1.3  视图的绘制方法 202

    8.2  改造已有的控件 205

    8.2.1  自定义月份选择器 205

    8.2.2  给翻页标签栏添加新属性 206

    8.2.3  不滚动的列表视图 208

    8.3  推送消息通知 210

    8.3.1  通知推送Notification 210

    8.3.2  通知渠道NotificationChannel 213

    8.3.3  推送服务到前台 215

    8.3.4  仿微信的悬浮通知 216

    8.4  通过持续绘制实现简单动画 221

    8.4.1  Handler的延迟机制 221

    8.4.2  重新绘制视图界面 222

    8.4.3  自定义饼图动画 224

    8.5  实战项目:广告轮播 227

    8.5.1  需求描述 227

    8.5.2  界面设计 227

    8.5.3  关键代码 228

    8.6  小结 231

    8.7  动手练习 231

    第9章  组合控件 232

    9.1  底部标签栏 232

    9.1.1  利用BottomNavigationView实现

    底部标签栏 232

    9.1.2  自定义标签按钮 236

    9.1.3  结合RadioGroup和ViewPager

    自定义底部标签栏 238

    9.2  顶部导航栏 241

    9.2.1  工具栏Toolbar 241

    9.2.2  溢出菜单OverflowMenu 242

    9.2.3  标签布局TabLayout 244

    9.3  增强型列表 246

    9.3.1  循环视图RecyclerView 247

    9.3.2  布局管理器LayoutManager 249

    9.3.3  动态更新循环视图 252

    9.4  升级版翻页 254

    9.4.1  下拉刷新布局

    SwipeRefreshLayout 254

    9.4.2  第二代翻页视图ViewPager2 256

    9.4.3  给ViewPager2集成标签布局 259

    9.5  实战项目:电商首页 261

    9.5.1  需求描述 261

    9.5.2  界面设计 262

    9.5.3  关键代码 263

    9.6  小结 264

    9.7  动手练习 264

    第10章  打造安装包 265

    10.1  应用打包 265

    10.1.1  导出APK安装包 265

    10.1.2  制作App图标 267

    10.1.3  给APK瘦身 268

    10.2  规范处理 271

    10.2.1  版本设置 271

    10.2.2  发布模式 272

    10.2.3  多渠道打包 274

    10.3  安全加固 276

    10.3.1  反编译 276

    10.3.2  代码混淆 278

    10.3.3  第三方加固及重签名 279

    10.4  小结 280

    10.5  动手练习 280

    第11章  事件交互 281

    11.1  按键事件 281

    11.1.1  检测软键盘 281

    11.1.2  检测物理按键 283

    11.1.3  接管返回按键 284

    11.2  触摸事件 285

    11.2.1  手势事件的分发流程 285

    11.2.2  接管手势事件处理 289

    11.2.3  跟踪滑动轨迹实现手写签名 292

    11.3  根据触摸行为辨别手势动作 293

    11.3.1  区分点击和长按动作 293

    11.3.2  识别手势滑动的方向 295

    11.3.3  辨别缩放与旋转手势 297

    11.4  手势冲突处理 300

    11.4.1  上下滚动与左右滑动的冲突

    处理 300

    11.4.2  内部滑动与翻页滑动的冲突

    处理 302

    11.4.3  正常下拉与下拉刷新的冲突

    处理 306

    11.5  实战项目:仿美图秀秀的抠图工具 309

    11.5.1  需求描述 309

    11.5.2  功能分析 309

    11.5.3  效果展示 310

    11.6  小结 311

    11.7  动手练习 311

    第12章  动画特效 312

    12.1  帧动画 312

    12.1.1  帧动画的实现 312

    12.1.2  显示动图特效 314

    12.1.3  淡入淡出动画 317

    12.2  补间动画 318

    12.2.1  补间动画的种类 318

    12.2.2  补间动画的原理 322

    12.2.3  集合动画 324

    12.3  属性动画 325

    12.3.1  常规的属性动画 325

    12.3.2  属性动画组合 328

    12.3.3  插值器和估值器 329

    12.3.4  利用估值器实现打赏动画 332

    12.4  遮罩动画及滚动器 335

    12.4.1  画布的绘图层次 335

    12.4.2  实现百叶窗动画 338

    12.4.3  利用滚动器实现平滑翻页 342

    12.5  实战项目:仿手机QQ的动感影集 344

    12.5.1  需求描述 345

    12.5.2  功能分析 346

    12.5.3  效果展示 349

    12.6  小结 350

    12.7  动手练习 350

    第13章  网络通信 351

    13.1  多线程 351

    13.1.1  分线程通过Handler操作

    界面 351

    13.1.2  通过runOnUiThread快速操纵

    界面 354

    13.1.3  工作管理器WorkManager 356

    13.2  HTTP访问 358

    13.2.1  移动数据格式JSON 359

    13.2.2  通过okhttp调用HTTP接口 361

    13.2.3  使用okhttp下载和上传文件 365

    13.3  图片加载 368

    13.3.1  使用Glide加载网络图片 369

    13.3.2  利用Glide实现图片的三级

    缓存 371

    13.3.3  使用Glide加载特殊图像 373

    13.4  即时通信 375

    13.4.1  通过SocketIO传输文本

    消息 375

    13.4.2  通过SocketIO传输图片

    消息 378

    13.4.3  利用WebSocket传输消息 380

    13.5  实战项目:仿微信的私聊和群聊 383

    13.5.1  需求描述 383

    13.5.2  功能分析 384

    13.5.3  效果展示 390

    13.6  小结 393

    13.7  动手练习 393

    第14章  多媒体 394

    14.1  音频录播 394

    14.1.1  使用系统录音机录制音频 394

    14.1.2  利用MediaPlayer播放音频 395

    14.1.3  利用MediaRecorder录制

    音频 398

    14.2  传统摄制 399

    14.2.1  使用系统相机拍摄照片 399

    14.2.2  使用系统摄像机录制视频 401

    14.2.3  利用视频视图与媒体控制条

    播放视频 403

    14.2.4  截取视频的某帧画面 405

    14.3  增强摄制 407

    14.3.1  使用CameraX拍照 407

    14.3.2  使用CameraX录像 411

    14.3.3  新型播放器ExoPlayer 413

    14.4  实战项目:仿抖音的短视频分享 416

    14.4.1  需求描述 417

    14.4.2  功能分析 418

    14.4.3  效果展示 421

    14.5  小结 422

    14.6  动手练习 422

    第15章  手机阅读 423

    15.1  浏览网页 423

    15.1.1  打开本地网页 423

    15.1.2  网页浏览器 425

    15.1.3  浏览EPUB文件 432

    15.2  浏览PDF文件 435

    15.2.1  PDF文件渲染器 435

    15.2.2  实现平滑翻书效果 437

    15.2.3  实现卷曲翻书动画 439

    15.3  浏览Office文档 444

    15.3.1  利用POI库浏览Word和

    Excel文档 445

    15.3.2  结合前后端浏览PPT文档 447

    15.3.3  利用TBS浏览各种文档 449

    15.4  JNI开发 451

    15.4.1  NDK环境搭建 451

    15.4.2  创建JNI接口 454

    15.4.3  JNI实现加解密 457

    15.4.4  采取CMake编译方式 459

    15.5  实战项目:笔墨飘香之电子书架 462

    15.5.1  需求描述 462

    15.5.2  功能分析 463

    15.5.3  效果展示 466

    15.6  小结 467

    15.7  动手练习 468

    第16章  感知定位 469

    16.1  传感器 469

    16.1.1  传感器的种类 469

    16.1.2  摇一摇——加速度传感器 471

    16.1.3  指南针——磁场传感器 472

    16.1.4  计步器、感光器和陀螺仪 474

    16.2  基础定位 476

    16.2.1  开启定位功能 476

    16.2.2  获取定位信息 478

    16.2.3  根据经纬度查找详细地址 482

    16.2.4  全球卫星导航系统 483

    16.3  地图导航 486

    16.3.1  集成腾讯地图 486

    16.3.2  显示地图面板 488

    16.3.3  获取地点信息 490

    16.3.4  规划导航路线 492

    16.4  实战项目:仿微信的附近的人 496

    16.4.1  需求描述 496

    16.4.2  功能分析 497

    16.4.3  效果展示 500

    16.5  小结 501

    16.6  动手练习 502

    第17章  物联网 503

    17.1  短距离通信 503

    17.1.1  WiFi管理器 503

    17.1.2  NFC近场通信 506

    17.1.3  红外遥控 511

    17.2  传统蓝牙 515

    17.2.1  蓝牙技术的发展历程 515

    17.2.2  蓝牙设备配对 515

    17.2.3  点对点蓝牙通信 521

    17.3  低功耗蓝牙 526

    17.3.1  扫描BLE设备 526

    17.3.2  发送BLE广播 531

    17.3.3  通过主从BLE实现聊天

    应用 533

    17.4  实战项目:自动驾驶的智能小车 538

    17.4.1  需求描述 539

    17.4.2  功能分析 539

    17.4.3  效果展示 543

    17.5  小结 544

    17.6  动手练习 544

    第18章  智能语音 545

    18.1  原生语音处理 545

    18.1.1  系统自带的语音引擎 545

    18.1.2  文字转语音 547

    18.1.3  中文转拼音 549

    18.2  在线语音处理 551

    18.2.1  原始音频录播 552

    18.2.2  在线语音合成 554

    18.2.3  在线语音识别 558

    18.3  基于机器学习的语音推断 561

    18.3.1  TensorFlow简介 561

    18.3.2  TensorFlow Lite 563

    18.3.3  从语音中识别指令 564

    18.4  实战项目:你问我答之小小机器人 566

    18.4.1  需求描述 566

    18.4.2  功能分析 567

    18.4.3  效果展示 572

    18.5  小结 574

    18.6  动手练习 574

    第19章  机器视觉 575

    19.1  简单图像识别 575

    19.1.1  扫描二维码 575

    19.1.2  扫描识别文本 578

    19.1.3  识别图像中的文档 582

    19.2  人脸识别 583

    19.2.1  人脸检测 584

    19.2.2  人脸比对 585

    19.2.3  活体检测 588

    19.3  人像进阶 590

    19.3.1  人像抠图 590

    19.3.2  背景替换 592

    19.3.3  笑脸捕捉 594

    19.4  实战项目:寻人神器之智慧天眼 596

    19.4.1  需求描述 597

    19.4.2  功能分析 598

    19.4.3  效果展示 599

    19.5  小结 601

    19.6  动手练习 601

    第20章  在线直播 602

    20.1  搭建WebRTC的服务端 602

    20.1.1  WebRTC的系统架构 602

    20.1.2  搭建信令服务器 604

    20.1.3  搭建穿透服务器 606

    20.2  给App集成WebRTC 608

    20.2.1  引入WebRTC开源库 608

    20.2.2  实现WebRTC的发起方 611

    20.2.3  实现WebRTC的接收方 614

    20.3  实战项目:仿微信的视频通话 616

    20.3.1  需求描述 616

    20.3.2  功能分析 617

    20.3.3  效果展示 621

    20.4  实战项目:仿拼多多的直播带货 621

    20.4.1  需求描述 622

    20.4.2  功能分析 622

    20.4.3  效果展示 627

    20.5  小结 629

    20.6  动手练习 629

    附录A  移动互联网行业的新技术 

    发展简表 630

    附录B  Android各版本的新增 

    功能简表 632

    附录C  Android常用开发库说明简表 634

    附录D  移动开发专业术语索引 636

    附录E  本书的服务端程序说明 639
查看详情
12