kindle电子书

资源下载,尽在我的书库!
首页 > kindle电子书库 > 工业|计算机|互联网 > 电子、计算机、网络

Android编程权威指南(第2版) (图灵程序设计丛书)

  • 作者: 多作者
  • 体积:11.70 MB
  • 语言:中文
  • 日期:2017-05-27
  • 推荐:

简介:Big Nerd Ranch是美国一家专业的移动开发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程指南。全书共34章,详细介绍了8个Android 应用。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得前沿的开发经验。如果你熟悉Java语言,或者了解面向对象编程,那就立刻开始Android编程之旅吧!

电子书详细介绍

 Big Nerd Ranch是美国一家专业的移动开发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程指南。全书共34章,详细介绍了8个Android 应用。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得前沿的开发经验。如果你熟悉Java语言,或者了解面向对象编程,那就立刻开始Android编程之旅吧!

作者简介

作者:[美]菲利普斯(Bill Phillips)、斯图尔特(Chris Stewart)、哈迪(Brian Hardy)、马尔西卡诺(Kristin Marsicano) 译者:王明发
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章 UIfragment与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 添加UIfragment到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 深入学习:为何要用fragmentargument 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章 XMLdrawable 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 使用sharedpreferences实现轻量级数据存储 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 章broadcastintent 447 
27.1 一般intent和broadcastintent 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

我来说两句

本书评论

共有 0 条评论
图书分类
我的书库手机端
帮助中心
会员登录 ×
新用户注册 ×