Android编程权威指南(第2版)

Android编程权威指南(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Bill Phillips) ,
2016-05
版次: 2
ISBN: 9787115422460
定价: 109.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 551页
字数: 839千字
正文语种: 简体中文
原版书名: Android Programming: The Big Nerd Ranch Guide (2nd Edition)
87人买过
  • Big Nerd Ranch是美国一家专业的移动开发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程指南。全书共34章,详细介绍了8个Android 应用。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得前沿的开发经验。
    如果你熟悉Java语言,或者了解面向对象编程,那就立刻开始Android编程之旅吧! Bill Phillips
    Big Nerd Ranch骨灰级讲师。他在Big Nerd Ranch与人合作开发了广受好评的Android训练营培训课程,并为之编写教材(包括本书第1版)。此后,Bill一直坚持撰写博客、阅读各类文学作品、作曲奏乐以及著书。

    Chris Stewart
    Big Nerd Ranch骨灰级Android训练营讲师、Android团队主管。他致力于不断取得进步,精进技能。不坐在电脑前时,Chris喜欢远足和旅行。

    Brian Hardy
    Big Nerd Ranch的iOS和Cocoa工程主管。他是Android训练营的首批讲师,与许多客户合作开发了众多Android和iOS移动应用。除同开发团队构建更出色的软件和研究自己新的项目之外,Brian喜欢陪伴朋友与家人——通常是在烧烤架旁。

    Kristin Marsicano
    Big Nerd Ranch讲师、Android开发者。她喜欢与他人分享知识,对学习、软件开发以及二者的交集充满热情。在授课和开发应用之余,Kristin会为家人烹调美食、练习瑜伽或学习一些新知识。



    王明发
    毕业于华东理工大学。软件开发及项目管理者,拥有近十年的软件开发及项目管理经验;译者,另译有《写给大家看的项目管理书(第3版)》。 第1章 Android开发初体验  1
    1.1 应用开发基础 1
    1.2 创建Android项目 2
    1.3 Android Studio使用导航 6
    1.4 用户界面设计 7
    1.4.1 视图层级结构 10
    1.4.2 组件属性 11
    1.4.3 创建字符串资源 12
    1.4.4 预览界面布局 12
    1.5 从布局XML到视图对象 13
    1.6 组件的实际应用 17
    1.6.1 引用组件 18
    1.6.2 设置监听器 18
    1.7 创建提示消息 20
    1.8 使用模拟器运行应用 23
    1.9 深入学习:Android编译过程 25
    第2章 Android与MVC设计模式 29
    2.1 创建新类 29
    2.2 Android与MVC设计模式 32
    2.3 更新视图层 34
    2.4 更新控制层 36
    2.5 在设备上运行应用 40
    2.5.1 连接设备 40
    2.5.2 配置设备用于应用开发 41
    2.6 添加图标资源 42
    2.6.1 向项目中添加资源 43
    2.6.2 在XML文件中引用资源 45
    2.7 关于挑战练习 46
    2.8 挑战练习:为TextView添加监听器 46
    2.9 挑战练习:添加后退按钮 46
    2.10 挑战练习:从按钮到图标按钮 47
    第3章 Activity的生命周期 49
    3.1 日志跟踪理解Activity生命周期 50
    3.1.1 输出日志信息 50
    3.1.2 使用LogCat 52
    3.2 设备旋转与Activity生命周期 55
    3.3 设备旋转前保存数据 59
    3.4 再探Activity生命周期 61
    3.5 深入学习:测试onSaveInstanceState(Bundle)方法 62
    3.6 深入学习:日志记录的级别与方法 64
    第4章 Android应用的调试 65
    4.1 异常与栈跟踪 66
    4.1.1 诊断应用异常 67
    4.1.2 记录栈跟踪日志 68
    4.1.3 设置断点 69
    4.1.4 使用异常断点 72
    4.2 Android特有的调试工具 73
    4.2.1 使用Android Lint 73
    4.2.2 R 类的问题 75
    第5章 第二个activity 76
    5.1 创建第二个activity 77
    5.1.1 创建新的activity 78
    5.1.2 创建新的activity 子类 81
    5.1.3 在manifest配置文件中声明activity 81
    5.1.4 为QuizActivity添加Cheat按钮 82
    5.2 启动activity 84
    5.3 activity间的数据传递 86
    5.3.1 使用intent extra 86
    5.3.2 从子activity获取返回结果 89
    5.4 activity的使用与管理 94
    5.5 挑战练习 97
    第6章 Android SDK版本与兼容 98
    6.1 Android SDK版本 98
    6.2 Android编程与兼容性问题 99
    6.2.1 比较合理的版本 99
    6.2.2 SDK最低版本 101
    6.2.3 SDK目标版本 101
    6.2.4 SDK编译版本 101
    6.2.5 安全添加新版本API中的代码 101
    6.3 使用Android开发者文档 104
    6.4 挑战练习:报告编译版本 106
    第7章 UI fragment与fragment管理器 107
    7.1 UI 设计的灵活性需求 108
    7.2 fragment的引入 108
    7.3 着手开发CriminalIntent 109
    7.3.1 创建新项目 112
    7.3.2 fragment与支持库 113
    7.3.3 在Android Studio中增加依赖关系 114
    7.3.4 创建Crime类 117
    7.4 托管UI fragment 118
    7.4.1 fragment的生命周期 118
    7.4.2 托管的两种方式 119
    7.4.3 定义容器视图 119
    7.5 创建UI fragment 120
    7.5.1 定义CrimeFragment的布局 121
    7.5.2 创建CrimeFragment类 122
    7.6 添加UI fragment到FragmentManager 125
    7.6.1 fragment事务 126
    7.6.2 FragmentManager与fragment生命周期 129
    7.7 采用fragment的应用架构 130
    7.8 深入学习:为什么应优先使用支持库版fragment 131
    7.9 深入学习:使用操作系统内置版fragment 131
    第8章 使用布局与组件创建用户界面 132
    8.2 更新布局 133
    8.3 生成并使用组件 135
    8.4 深入探讨XML布局属性 136
    8.4.1 样式、主题及主题属性 136
    8.4.2 dp、sp以及屏幕像素密度 137
    8.4.3 Android开发设计原则 138
    8.4.4 布局参数 139
    8.4.5 边距与内边距 139
    8.5 使用图形布局工具 140
    8.5.1 创建水平模式布局 141
    8.5.2 添加新组件 142
    8.5.3 在属性视图中编辑组件属性 143
    8.5.4 在框架视图中重新组织组件 144
    8.5.5 更新子组件的布局参数 145
    8.5.6 android:layout_weight属性的工作原理 146
    8.5.7 图形布局工具使用总结 147
    8.5.8 组件ID与多种布局 148
    8.6 挑战练习:日期格式化 148
    第9章 使用RecyclerView显示列表 150
    9.2 使用抽象activity托管fragment 153
    9.2.1 通用的fragment托管布局 153
    9.2.2 抽象activity类 154
    9.3 RecyclerView、Adapter和ViewHolder 158
    9.3.1 ViewHolder和Adapter 159
    9.3.2 使用RecyclerView 161
    9.3.3 实现Adapter和ViewHolder 166
    9.4.1 创建列表项布局 166
    9.4.2 使用定制列表项视图 168
    9.5 响应点击 170
    9.6 深入学习:ListView和GridView 171
    9.7 深入学习:单例 171
    第10章 使用fragment argument 173
    10.1 从fragment中启动activity 173
    10.1.1 附加extra信息 174
    10.1.2 获取extra信息 175
    10.1.3 使用Crime数据更新CrimeFragment视图 176
    10.1.4 直接获取extra信息的缺点 177
    10.2 fragment argument 177
    10.2.1 附加argument给fragment 178
    10.2.2 获取argument 179
    10.3 刷新显示列表项 180
    10.4 通过fragment获取返回结果 182
    10.5 挑战练习:实现高效的RecyclerView 刷新 183
    10.6 深入学习:为何要用fragment argument 183
    第11章 使用ViewPager 185
    11.1 创建CrimePagerActivity 186
    11.1.1 ViewPager与PagerAdapter 187
    11.1.2 整合并配置使用CrimePagerActivity 188
    11.2 FragmentStatePagerAdapter与FragmentPagerAdapter 190
    11.3 深入学习:ViewPager的工作原理 192
    11.4 深入学习:以代码的方式创建布局 193
    第12章 对话框 194
    12.1 使用AppCompat兼容库 195
    12.2 创建DialogFragment 196
    12.2.1 显示DialogFragment 198
    12.2.2 设置对话框的显示内容 199
    12.3 fragment间的数据传递 202
    12.3.1 传递数据给DatePickerFragment 203
    12.3.2 返回数据给CrimeFragment 204
    12.4 挑战练习:更多对话框 211
    12.5 挑战练习:按设备类型展现DialogFragment 212
    第13章 工具栏 213
    13.1 AppCompat 213
    13.2 工具栏菜单 216
    13.2.1 在XML文件中定义菜单....... 217
    13.2.2 创建菜单 221
    13.2.3 响应菜单项选择 223
    13.3 实现层级式导航 225
    13.4 可选菜单项 226
    13.4.1 切换菜单项标题 227
    13.4.2 “还有个问题” 229
    13.5 深入学习:工具栏与操作栏 231
    13.6 挑战练习:删除crime记录 231
    13.7 挑战练习:优化字符串资源显示 231
    13.8 挑战练习:用于RecyclerView的空视图 232
    第14章 SQLite数据库 233
    14.1 定义Schema 233
    14.2 创建初始数据库 234
    14.3 修改CrimeLab类 238
    14.4 写入数据库 239
    14.4.1 使用ContentValues 239
    14.4.2 插入和更新记录 240
    14.5 读取数据库 242
    14.5.1 使用CursorWrapper 243
    14.5.2 创建模型层对象 244
    14.6 深入学习:数据库高级主题介绍 247
    14.7 深入学习:应用上下文 248
    14.8 挑战练习:删除Crime记录 248
    第15章 隐式intent 249
    15.1 添加按钮组件 250
    15.2 添加嫌疑人信息至模型层 252
    15.3 使用格式化字符串 254
    15.4 使用隐式intent 255
    15.4.1 隐式intent的组成 255
    15.4.2 发送消息 256
    15.4.3 获取联系人信息 259
    15.4.4 检查可响应任务的activity 263
    15.5 挑战练习:ShareCompat 265
    15.6 挑战练习:又一个隐式intent 265
    第16章 使用intent拍照 266
    16.1 布置照片 266
    16.2 外部存储 269
    16.3 使用相机intent 272
    16.3.1 外部存储使用权限 272
    16.3.2 触发拍照 273
    16.4 缩放和显示位图 274
    16.5 功能声明 277
    16.6 深入学习:使用include标签 278
    16.7 挑战练习:优化照片显示 278
    16.8 挑战练习:优化缩略图加载 279
    第17章 Master-Detail用户界面 280
    17.1 增加布局灵活性 281
    17.1.1 修改SingleFragmentActivity 282
    17.1.2 创建包含两个fragment容器的布局 283
    17.1.3 使用别名资源 284
    17.1.4 创建平板设备专用可选资源 285
    17.2 Activity:fragment的托管者 286
    17.3 深入学习:设备屏幕尺寸的确定 295
    第18章 Assets 297
    18.1 为何使用assets 297
    18.2 创建BeatBox 应用 298
    18.3 导入assets 301
    18.4 处理assets 303
    18.5 使用Assets 305
    18.6 访问Assets 308
    18.7 深入学习:什么是non-assets 308
    第19章 使用SoundPool播放音频 309
    19.1 创建SoundPool 309
    19.2 加载音频文件 310
    19.3 播放音频 311
    19.4 释放音频 313
    19.5 设备旋转和对象保存 314
    19.5.1 保留fragment 315
    19.5.2 旋转和已保留fragment 316
    19.6 深入学习:是否要保留 318
    19.7 深入学习:设备旋转处理再探 318
    第20章 样式与主题 321
    20.1 颜色资源 321
    20.2 样式 322
    20.3 主题 324
    20.4 添加主题颜色 327
    20.5 覆盖主题属性 328
    20.6 修改按钮属性 332
    20.7 深入学习:样式继承拾遗 334
    20.8 深入学习:引用主题属性 335
    20.9 挑战练习:创建多版本主题 335
    第21章 XML drawable 336
    21.1 统一按钮样式 337
    21.2 shape drawable 338
    21.3 state list drawable 340
    21.4 layer list drawable 341
    21.5 深入学习:为什么要用XML drawable 342
    21.6 深入学习:使用9-patch图像 343
    21.7 深入学习:使用Mipmap图像 347
    第22章 深入学习intent和任务 348
    22.1 创建NerdLauncher项目 348
    22.2 解析隐式intent 351
    22.3 在运行时创建显式intent 355
    22.4 任务与后退栈 357
    22.4.1 在任务间切换 357
    22.4.2 启动新任务 358
    22.5 使用NerdLauncher应用作为设备主屏幕 361
    22.6 挑战练习:应用图标 362
    22.7 深入学习:进程与任务 362
    22.8 深入学习:并发文档 364
    第23章 HTTP与后台任务 367
    23.1 创建PhotoGallery应用 368
    23.2 网络连接基本 371
    23.3 使用AsyncTask在后台线程上运行代码 373
    23.4 线程与主线程 374
    23.5 从Flickr获取JSON数据 376
    23.6 从AsyncTask回到主线程 383
    23.7 清理AsyncTask 386
    23.8 深入学习:AsyncTask再探 387
    23.9 深入学习:AsyncTask的替代方案 388
    23.10 挑战练习:Gson 388
    23.11 挑战练习:分页 388
    23.12 挑战练习:动态调整网格列 389
    第24章 Looper、Handler和HandlerThread 390
    24.1 配置RecyclerView以显示图片 390
    24.2 批量下载缩略图 393
    24.3 与主线程通信 393
    24.4 创建并启动后台线程 394
    24.5 Message与message handler 396
    24.5.1 消息的剖析 397
    24.5.2 Handler的剖析 397
    24.5.3 使用handler 398
    24.5.4 传递handler 402
    24.6 深入学习:AsyncTask与线程 407
    24.7 挑战练习:预加载以及缓存 407
    24.8 深入学习:解决图片下载问题 408
    第25章 搜索 409
    25.1 搜索Flickr 网站 410
    25.2 使用SearchView 414
    25.3 使用shared preferences实现轻量级数据存储 419
    25.4 优化应用 422
    25.5 挑战练习:深度优化PhotoGallery应用 423
    第26章 后台服务 424
    26.1 创建IntentService 424
    26.2 服务的作用 427
    26.3 查找最新返回结果 428
    26.4 使用AlarmManager延迟运行服务 430
    26.4.1 合理控制服务启动的频度 432
    26.4.2 PendingIntent 433
    26.4.3 使用PendingIntent管理定时器 434
    26.5 控制定时器 434
    26.6 通知信息 437
    26.7 挑战练习:可穿戴设备上的通知 439
    26.8 深入学习:服务细节内容 440
    26.8.1 服务的能与不能 440
    26.8.2 服务的生命周期 440
    26.8.3 non-sticky服务 440
    26.8.4 sticky 服务 441
    26.8.5 绑定服务 441
    26.9 深入学习:JobScheduler和JobService 442
    26.10 深入学习:Sync Adapter 445
    26.11 挑战练习:在Lollipop设备上使用JobService 446
    第27 章 broadcast intent 447
    27.1 一般intent 和broadcast intent 447
    27.2 接收系统broadcast:重启后唤醒 448
    27.2.1 standalone receiver 448
    27.2.2 使用receiver 450
    27.3 过滤前台通知消息 452
    27.3.1 发送broadcast intent 452
    27.3.2 动态broadcast receiver 453
    27.3.3 使用私有权限 455
    27.3.4 使用有序broadcast 458
    27.4 receiver与长时运行任务 462
    27.5 深入学习:本地事件 462
    27.5.1 使用EventBus 463
    27.5.2 使用Rxjava 463
    27.6 深入学习:检测fragment的状态 464
    第28章 网页浏览 466
    28.1 最后一段Flickr数据 466
    28.2 简单方式:隐式intent 469
    28.3 较难方式:使用WebView 470
    28.4 处理WebView的设备旋转问题 476
    28.5 深入学习:注入JavaScript对象 477
    28.6 深入学习:KitKat的WebView 478
    28.7 挑战练习:使用后退键浏览历史网页 478
    28.8 挑战练习:非HTTP链接支持 479
    第29章 定制视图与触摸事件 480
    29.1 创建DragAndDraw项目 480
    29.1.1 创建DragAndDrawActivity 481
    29.1.2 创建DragAndDrawFragment 481
    29.2 创建定制视图 482
    29.3 处理触摸事件 484
    29.4 onDraw(...)方法内的图形绘制 488
    29.5 挑战练习:设备旋转问题 490
    29.6 挑战练习:旋转矩形框 490
    第30章 属性动画 492
    30.1 建立场景 492
    30.2 简单属性动画 495
    30.2.1 视图属性转换 498
    30.2.2 使用不同的interpolator 500
    30.2.3 色彩渐变 500
    30.3 播放多个动画 502
    30.4 深入学习:其他动画API 504
    30.4.1 传统动画工具 504
    30.4.2 转场 504
    30.5 挑战练习 504
    第31章 地理位置和Play服务 505
    31.1 地理位置和定位类库 505
    31.2 创建Locatr项目 506
    31.3 Play 服务和模拟器 507
    31.4 创建Locatr应用 510
    31.5 配置Google Play服务 512
    31.6 使用Google Play服务 514
    31.7 基于地理位置的Flickr搜索 516
    31.8 获取定位数据 517
    31.9 寻找并显示图片 519
    31.10 挑战练习:进度指示器 521
    第32章 使用地图 522
    32.1 导入Play地图服务库 522
    32.2 Android上的地图服务 522
    32.3 地图API设置 523
    32.4 创建地图 525
    32.5 获取更多地理位置数据 526
    32.6 使用地图 529
    32.7 深入学习:团队开发和API key 534
    第33章 material design 536
    33.1 material surface 536
    33.1.1 elevation和Z值 538
    33.1.2 state list animator 539
    33.2 动画工具 540
    33.2.1 circular reveal 541
    33.2.2 shared element transition 542
    33.3 新的视图组件 545
    33.3.1 card 545
    33.3.2 floating action button 547
    33.3.3 snackbar 548
    33.4 深入学习material design 549
    第34 章 编后语 550
    34.1 终极挑战 550
    34.2 关于我们 551
    34.3 致谢 551
  • 内容简介:
    Big Nerd Ranch是美国一家专业的移动开发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程指南。全书共34章,详细介绍了8个Android 应用。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得前沿的开发经验。
    如果你熟悉Java语言,或者了解面向对象编程,那就立刻开始Android编程之旅吧!
  • 作者简介:
    Bill Phillips
    Big Nerd Ranch骨灰级讲师。他在Big Nerd Ranch与人合作开发了广受好评的Android训练营培训课程,并为之编写教材(包括本书第1版)。此后,Bill一直坚持撰写博客、阅读各类文学作品、作曲奏乐以及著书。

    Chris Stewart
    Big Nerd Ranch骨灰级Android训练营讲师、Android团队主管。他致力于不断取得进步,精进技能。不坐在电脑前时,Chris喜欢远足和旅行。

    Brian Hardy
    Big Nerd Ranch的iOS和Cocoa工程主管。他是Android训练营的首批讲师,与许多客户合作开发了众多Android和iOS移动应用。除同开发团队构建更出色的软件和研究自己新的项目之外,Brian喜欢陪伴朋友与家人——通常是在烧烤架旁。

    Kristin Marsicano
    Big Nerd Ranch讲师、Android开发者。她喜欢与他人分享知识,对学习、软件开发以及二者的交集充满热情。在授课和开发应用之余,Kristin会为家人烹调美食、练习瑜伽或学习一些新知识。



    王明发
    毕业于华东理工大学。软件开发及项目管理者,拥有近十年的软件开发及项目管理经验;译者,另译有《写给大家看的项目管理书(第3版)》。
  • 目录:
    第1章 Android开发初体验  1
    1.1 应用开发基础 1
    1.2 创建Android项目 2
    1.3 Android Studio使用导航 6
    1.4 用户界面设计 7
    1.4.1 视图层级结构 10
    1.4.2 组件属性 11
    1.4.3 创建字符串资源 12
    1.4.4 预览界面布局 12
    1.5 从布局XML到视图对象 13
    1.6 组件的实际应用 17
    1.6.1 引用组件 18
    1.6.2 设置监听器 18
    1.7 创建提示消息 20
    1.8 使用模拟器运行应用 23
    1.9 深入学习:Android编译过程 25
    第2章 Android与MVC设计模式 29
    2.1 创建新类 29
    2.2 Android与MVC设计模式 32
    2.3 更新视图层 34
    2.4 更新控制层 36
    2.5 在设备上运行应用 40
    2.5.1 连接设备 40
    2.5.2 配置设备用于应用开发 41
    2.6 添加图标资源 42
    2.6.1 向项目中添加资源 43
    2.6.2 在XML文件中引用资源 45
    2.7 关于挑战练习 46
    2.8 挑战练习:为TextView添加监听器 46
    2.9 挑战练习:添加后退按钮 46
    2.10 挑战练习:从按钮到图标按钮 47
    第3章 Activity的生命周期 49
    3.1 日志跟踪理解Activity生命周期 50
    3.1.1 输出日志信息 50
    3.1.2 使用LogCat 52
    3.2 设备旋转与Activity生命周期 55
    3.3 设备旋转前保存数据 59
    3.4 再探Activity生命周期 61
    3.5 深入学习:测试onSaveInstanceState(Bundle)方法 62
    3.6 深入学习:日志记录的级别与方法 64
    第4章 Android应用的调试 65
    4.1 异常与栈跟踪 66
    4.1.1 诊断应用异常 67
    4.1.2 记录栈跟踪日志 68
    4.1.3 设置断点 69
    4.1.4 使用异常断点 72
    4.2 Android特有的调试工具 73
    4.2.1 使用Android Lint 73
    4.2.2 R 类的问题 75
    第5章 第二个activity 76
    5.1 创建第二个activity 77
    5.1.1 创建新的activity 78
    5.1.2 创建新的activity 子类 81
    5.1.3 在manifest配置文件中声明activity 81
    5.1.4 为QuizActivity添加Cheat按钮 82
    5.2 启动activity 84
    5.3 activity间的数据传递 86
    5.3.1 使用intent extra 86
    5.3.2 从子activity获取返回结果 89
    5.4 activity的使用与管理 94
    5.5 挑战练习 97
    第6章 Android SDK版本与兼容 98
    6.1 Android SDK版本 98
    6.2 Android编程与兼容性问题 99
    6.2.1 比较合理的版本 99
    6.2.2 SDK最低版本 101
    6.2.3 SDK目标版本 101
    6.2.4 SDK编译版本 101
    6.2.5 安全添加新版本API中的代码 101
    6.3 使用Android开发者文档 104
    6.4 挑战练习:报告编译版本 106
    第7章 UI fragment与fragment管理器 107
    7.1 UI 设计的灵活性需求 108
    7.2 fragment的引入 108
    7.3 着手开发CriminalIntent 109
    7.3.1 创建新项目 112
    7.3.2 fragment与支持库 113
    7.3.3 在Android Studio中增加依赖关系 114
    7.3.4 创建Crime类 117
    7.4 托管UI fragment 118
    7.4.1 fragment的生命周期 118
    7.4.2 托管的两种方式 119
    7.4.3 定义容器视图 119
    7.5 创建UI fragment 120
    7.5.1 定义CrimeFragment的布局 121
    7.5.2 创建CrimeFragment类 122
    7.6 添加UI fragment到FragmentManager 125
    7.6.1 fragment事务 126
    7.6.2 FragmentManager与fragment生命周期 129
    7.7 采用fragment的应用架构 130
    7.8 深入学习:为什么应优先使用支持库版fragment 131
    7.9 深入学习:使用操作系统内置版fragment 131
    第8章 使用布局与组件创建用户界面 132
    8.2 更新布局 133
    8.3 生成并使用组件 135
    8.4 深入探讨XML布局属性 136
    8.4.1 样式、主题及主题属性 136
    8.4.2 dp、sp以及屏幕像素密度 137
    8.4.3 Android开发设计原则 138
    8.4.4 布局参数 139
    8.4.5 边距与内边距 139
    8.5 使用图形布局工具 140
    8.5.1 创建水平模式布局 141
    8.5.2 添加新组件 142
    8.5.3 在属性视图中编辑组件属性 143
    8.5.4 在框架视图中重新组织组件 144
    8.5.5 更新子组件的布局参数 145
    8.5.6 android:layout_weight属性的工作原理 146
    8.5.7 图形布局工具使用总结 147
    8.5.8 组件ID与多种布局 148
    8.6 挑战练习:日期格式化 148
    第9章 使用RecyclerView显示列表 150
    9.2 使用抽象activity托管fragment 153
    9.2.1 通用的fragment托管布局 153
    9.2.2 抽象activity类 154
    9.3 RecyclerView、Adapter和ViewHolder 158
    9.3.1 ViewHolder和Adapter 159
    9.3.2 使用RecyclerView 161
    9.3.3 实现Adapter和ViewHolder 166
    9.4.1 创建列表项布局 166
    9.4.2 使用定制列表项视图 168
    9.5 响应点击 170
    9.6 深入学习:ListView和GridView 171
    9.7 深入学习:单例 171
    第10章 使用fragment argument 173
    10.1 从fragment中启动activity 173
    10.1.1 附加extra信息 174
    10.1.2 获取extra信息 175
    10.1.3 使用Crime数据更新CrimeFragment视图 176
    10.1.4 直接获取extra信息的缺点 177
    10.2 fragment argument 177
    10.2.1 附加argument给fragment 178
    10.2.2 获取argument 179
    10.3 刷新显示列表项 180
    10.4 通过fragment获取返回结果 182
    10.5 挑战练习:实现高效的RecyclerView 刷新 183
    10.6 深入学习:为何要用fragment argument 183
    第11章 使用ViewPager 185
    11.1 创建CrimePagerActivity 186
    11.1.1 ViewPager与PagerAdapter 187
    11.1.2 整合并配置使用CrimePagerActivity 188
    11.2 FragmentStatePagerAdapter与FragmentPagerAdapter 190
    11.3 深入学习:ViewPager的工作原理 192
    11.4 深入学习:以代码的方式创建布局 193
    第12章 对话框 194
    12.1 使用AppCompat兼容库 195
    12.2 创建DialogFragment 196
    12.2.1 显示DialogFragment 198
    12.2.2 设置对话框的显示内容 199
    12.3 fragment间的数据传递 202
    12.3.1 传递数据给DatePickerFragment 203
    12.3.2 返回数据给CrimeFragment 204
    12.4 挑战练习:更多对话框 211
    12.5 挑战练习:按设备类型展现DialogFragment 212
    第13章 工具栏 213
    13.1 AppCompat 213
    13.2 工具栏菜单 216
    13.2.1 在XML文件中定义菜单....... 217
    13.2.2 创建菜单 221
    13.2.3 响应菜单项选择 223
    13.3 实现层级式导航 225
    13.4 可选菜单项 226
    13.4.1 切换菜单项标题 227
    13.4.2 “还有个问题” 229
    13.5 深入学习:工具栏与操作栏 231
    13.6 挑战练习:删除crime记录 231
    13.7 挑战练习:优化字符串资源显示 231
    13.8 挑战练习:用于RecyclerView的空视图 232
    第14章 SQLite数据库 233
    14.1 定义Schema 233
    14.2 创建初始数据库 234
    14.3 修改CrimeLab类 238
    14.4 写入数据库 239
    14.4.1 使用ContentValues 239
    14.4.2 插入和更新记录 240
    14.5 读取数据库 242
    14.5.1 使用CursorWrapper 243
    14.5.2 创建模型层对象 244
    14.6 深入学习:数据库高级主题介绍 247
    14.7 深入学习:应用上下文 248
    14.8 挑战练习:删除Crime记录 248
    第15章 隐式intent 249
    15.1 添加按钮组件 250
    15.2 添加嫌疑人信息至模型层 252
    15.3 使用格式化字符串 254
    15.4 使用隐式intent 255
    15.4.1 隐式intent的组成 255
    15.4.2 发送消息 256
    15.4.3 获取联系人信息 259
    15.4.4 检查可响应任务的activity 263
    15.5 挑战练习:ShareCompat 265
    15.6 挑战练习:又一个隐式intent 265
    第16章 使用intent拍照 266
    16.1 布置照片 266
    16.2 外部存储 269
    16.3 使用相机intent 272
    16.3.1 外部存储使用权限 272
    16.3.2 触发拍照 273
    16.4 缩放和显示位图 274
    16.5 功能声明 277
    16.6 深入学习:使用include标签 278
    16.7 挑战练习:优化照片显示 278
    16.8 挑战练习:优化缩略图加载 279
    第17章 Master-Detail用户界面 280
    17.1 增加布局灵活性 281
    17.1.1 修改SingleFragmentActivity 282
    17.1.2 创建包含两个fragment容器的布局 283
    17.1.3 使用别名资源 284
    17.1.4 创建平板设备专用可选资源 285
    17.2 Activity:fragment的托管者 286
    17.3 深入学习:设备屏幕尺寸的确定 295
    第18章 Assets 297
    18.1 为何使用assets 297
    18.2 创建BeatBox 应用 298
    18.3 导入assets 301
    18.4 处理assets 303
    18.5 使用Assets 305
    18.6 访问Assets 308
    18.7 深入学习:什么是non-assets 308
    第19章 使用SoundPool播放音频 309
    19.1 创建SoundPool 309
    19.2 加载音频文件 310
    19.3 播放音频 311
    19.4 释放音频 313
    19.5 设备旋转和对象保存 314
    19.5.1 保留fragment 315
    19.5.2 旋转和已保留fragment 316
    19.6 深入学习:是否要保留 318
    19.7 深入学习:设备旋转处理再探 318
    第20章 样式与主题 321
    20.1 颜色资源 321
    20.2 样式 322
    20.3 主题 324
    20.4 添加主题颜色 327
    20.5 覆盖主题属性 328
    20.6 修改按钮属性 332
    20.7 深入学习:样式继承拾遗 334
    20.8 深入学习:引用主题属性 335
    20.9 挑战练习:创建多版本主题 335
    第21章 XML drawable 336
    21.1 统一按钮样式 337
    21.2 shape drawable 338
    21.3 state list drawable 340
    21.4 layer list drawable 341
    21.5 深入学习:为什么要用XML drawable 342
    21.6 深入学习:使用9-patch图像 343
    21.7 深入学习:使用Mipmap图像 347
    第22章 深入学习intent和任务 348
    22.1 创建NerdLauncher项目 348
    22.2 解析隐式intent 351
    22.3 在运行时创建显式intent 355
    22.4 任务与后退栈 357
    22.4.1 在任务间切换 357
    22.4.2 启动新任务 358
    22.5 使用NerdLauncher应用作为设备主屏幕 361
    22.6 挑战练习:应用图标 362
    22.7 深入学习:进程与任务 362
    22.8 深入学习:并发文档 364
    第23章 HTTP与后台任务 367
    23.1 创建PhotoGallery应用 368
    23.2 网络连接基本 371
    23.3 使用AsyncTask在后台线程上运行代码 373
    23.4 线程与主线程 374
    23.5 从Flickr获取JSON数据 376
    23.6 从AsyncTask回到主线程 383
    23.7 清理AsyncTask 386
    23.8 深入学习:AsyncTask再探 387
    23.9 深入学习:AsyncTask的替代方案 388
    23.10 挑战练习:Gson 388
    23.11 挑战练习:分页 388
    23.12 挑战练习:动态调整网格列 389
    第24章 Looper、Handler和HandlerThread 390
    24.1 配置RecyclerView以显示图片 390
    24.2 批量下载缩略图 393
    24.3 与主线程通信 393
    24.4 创建并启动后台线程 394
    24.5 Message与message handler 396
    24.5.1 消息的剖析 397
    24.5.2 Handler的剖析 397
    24.5.3 使用handler 398
    24.5.4 传递handler 402
    24.6 深入学习:AsyncTask与线程 407
    24.7 挑战练习:预加载以及缓存 407
    24.8 深入学习:解决图片下载问题 408
    第25章 搜索 409
    25.1 搜索Flickr 网站 410
    25.2 使用SearchView 414
    25.3 使用shared preferences实现轻量级数据存储 419
    25.4 优化应用 422
    25.5 挑战练习:深度优化PhotoGallery应用 423
    第26章 后台服务 424
    26.1 创建IntentService 424
    26.2 服务的作用 427
    26.3 查找最新返回结果 428
    26.4 使用AlarmManager延迟运行服务 430
    26.4.1 合理控制服务启动的频度 432
    26.4.2 PendingIntent 433
    26.4.3 使用PendingIntent管理定时器 434
    26.5 控制定时器 434
    26.6 通知信息 437
    26.7 挑战练习:可穿戴设备上的通知 439
    26.8 深入学习:服务细节内容 440
    26.8.1 服务的能与不能 440
    26.8.2 服务的生命周期 440
    26.8.3 non-sticky服务 440
    26.8.4 sticky 服务 441
    26.8.5 绑定服务 441
    26.9 深入学习:JobScheduler和JobService 442
    26.10 深入学习:Sync Adapter 445
    26.11 挑战练习:在Lollipop设备上使用JobService 446
    第27 章 broadcast intent 447
    27.1 一般intent 和broadcast intent 447
    27.2 接收系统broadcast:重启后唤醒 448
    27.2.1 standalone receiver 448
    27.2.2 使用receiver 450
    27.3 过滤前台通知消息 452
    27.3.1 发送broadcast intent 452
    27.3.2 动态broadcast receiver 453
    27.3.3 使用私有权限 455
    27.3.4 使用有序broadcast 458
    27.4 receiver与长时运行任务 462
    27.5 深入学习:本地事件 462
    27.5.1 使用EventBus 463
    27.5.2 使用Rxjava 463
    27.6 深入学习:检测fragment的状态 464
    第28章 网页浏览 466
    28.1 最后一段Flickr数据 466
    28.2 简单方式:隐式intent 469
    28.3 较难方式:使用WebView 470
    28.4 处理WebView的设备旋转问题 476
    28.5 深入学习:注入JavaScript对象 477
    28.6 深入学习:KitKat的WebView 478
    28.7 挑战练习:使用后退键浏览历史网页 478
    28.8 挑战练习:非HTTP链接支持 479
    第29章 定制视图与触摸事件 480
    29.1 创建DragAndDraw项目 480
    29.1.1 创建DragAndDrawActivity 481
    29.1.2 创建DragAndDrawFragment 481
    29.2 创建定制视图 482
    29.3 处理触摸事件 484
    29.4 onDraw(...)方法内的图形绘制 488
    29.5 挑战练习:设备旋转问题 490
    29.6 挑战练习:旋转矩形框 490
    第30章 属性动画 492
    30.1 建立场景 492
    30.2 简单属性动画 495
    30.2.1 视图属性转换 498
    30.2.2 使用不同的interpolator 500
    30.2.3 色彩渐变 500
    30.3 播放多个动画 502
    30.4 深入学习:其他动画API 504
    30.4.1 传统动画工具 504
    30.4.2 转场 504
    30.5 挑战练习 504
    第31章 地理位置和Play服务 505
    31.1 地理位置和定位类库 505
    31.2 创建Locatr项目 506
    31.3 Play 服务和模拟器 507
    31.4 创建Locatr应用 510
    31.5 配置Google Play服务 512
    31.6 使用Google Play服务 514
    31.7 基于地理位置的Flickr搜索 516
    31.8 获取定位数据 517
    31.9 寻找并显示图片 519
    31.10 挑战练习:进度指示器 521
    第32章 使用地图 522
    32.1 导入Play地图服务库 522
    32.2 Android上的地图服务 522
    32.3 地图API设置 523
    32.4 创建地图 525
    32.5 获取更多地理位置数据 526
    32.6 使用地图 529
    32.7 深入学习:团队开发和API key 534
    第33章 material design 536
    33.1 material surface 536
    33.1.1 elevation和Z值 538
    33.1.2 state list animator 539
    33.2 动画工具 540
    33.2.1 circular reveal 541
    33.2.2 shared element transition 542
    33.3 新的视图组件 545
    33.3.1 card 545
    33.3.2 floating action button 547
    33.3.3 snackbar 548
    33.4 深入学习material design 549
    第34 章 编后语 550
    34.1 终极挑战 550
    34.2 关于我们 551
    34.3 致谢 551
查看详情
系列丛书 / 更多
Android编程权威指南(第2版)
机器学习实战
[美]Peter Harrington 著;李锐、李鹏、曲亚东 译
Android编程权威指南(第2版)
图灵程序设计丛书:Python基础教程
[挪威]Magnus Lie Hetland 著;司维、曾军崴、谭颖华 译
Android编程权威指南(第2版)
JavaScript高级程序设计(第3版)
[美]Nicholas C.Zakas 著;李松峰、曹力 译
Android编程权威指南(第2版)
Python编程:从入门到实践
[美]埃里克·马瑟斯(Eric Matthes) 著;袁国忠 译
Android编程权威指南(第2版)
R语言实战(第2版)
[美]卡巴科弗(Robert I. Kabacoff) 著;王小宁、刘撷芯、黄俊文 译
Android编程权威指南(第2版)
大数据:互联网大规模数据挖掘与分布式处理
[美]Anand、[美]Jeffrey David Ullman 著;王斌 译
Android编程权威指南(第2版)
算法(第4版)
[美]Robert、[美]Kevin Wayne 著;谢路云 译
Android编程权威指南(第2版)
Spark快速大数据分析
[美]卡劳(Holden Karau)、[美]肯维尼斯科(Andy Konwinski)、[美]温德尔(Patrick Wendell)、[加拿大]扎哈里亚(Matei Zaharia) 著;王道远 译
Android编程权威指南(第2版)
MySQL必知必会
[英]福塔(Ben Forta) 著;刘晓霞、钟鸣 译
Android编程权威指南(第2版)
图解HTTP
[日]上野·宣 著;于均良 译
Android编程权威指南(第2版)
Objective-C基础教程 第2版
[美]Scott、[美]Waqar、[美]Mark Dalrymple 著;周庆成 译
Android编程权威指南(第2版)
算法图解
袁国忠 译
您可能感兴趣 / 更多
Android编程权威指南(第2版)
宇宙视觉史:从宇宙大爆炸到时间的尽头
[美]查尔斯·刘 著;高爽 译者;[美]马克西姆· 马洛维奇科 绘;未读 出品
Android编程权威指南(第2版)
写出我心 普通人如何通过写作表达自己(平装本)
[美]娜塔莉·戈德堡(Natalie Goldberg)
Android编程权威指南(第2版)
写出我心3 写作疗愈的真正秘密
[美]娜塔莉·戈德堡(Natalie Goldberg)
Android编程权威指南(第2版)
神套路:为什么我们总被带节奏(狂热与网红时代醍醐灌顶之作,教给普通人安身立命的不二法门!)
[美]阿里·阿莫萨维 著;[哥伦比亚]亚历杭德罗·希拉尔多 绘
Android编程权威指南(第2版)
阿伦森自传
[美]埃利奥特·阿伦森(Elliot Aronson) 著;沈捷 译;湛庐文化 出品
Android编程权威指南(第2版)
街头官僚:公共服务中的个人困境
[美]迈克尔·李普斯基(Michael Lipsky)
Android编程权威指南(第2版)
史前至蒙古帝国时期的内欧亚大陆史
[美]大卫·克里斯蒂安 著;潘玲 译;杨建华 校
Android编程权威指南(第2版)
意大利文艺复兴新艺术史
[美]迈克尔·韦恩·科尔 著;[美]斯蒂芬·J·坎贝尔;邵亦杨
Android编程权威指南(第2版)
老人与海 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]海明威
Android编程权威指南(第2版)
养育的觉醒:全面激发孩子自驱力,教你如何心平气和做妈妈
[美]凯文·莱曼 著;唐晓璐 译;斯坦威 出品
Android编程权威指南(第2版)
自律我也能做到(全9册)
[美]康妮·科维尔·米勒 著;[阿根廷]维多利亚·阿萨纳利 绘
Android编程权威指南(第2版)
你在等什么?
[美]斯科特·明钦 著;[中]易万 译;[美]马特 ·斐兰 绘