Android编程权威指南-(第2版) 内容简介
权威——源自大名鼎鼎的bignerd ranch训练营培训讲义,该训练营已经为微软、谷歌、facebook等行业巨头培养了众多专业人才。全面——涵盖android开发所有**理论概念和技术知识点。实用——8个android应用开发实战项目,传授*直接的开发经验。易懂——以循序渐进的方式精心编排章节,一步一步写出android应用。
Android编程权威指南-(第2版) 本书特色
big nerd ranch是美国一家专业的移动开发技术培训机构。本书主要以其android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的android编程指南。全书共34章,详细介绍了8个android 应用。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得前沿的开发经验。如果你熟悉java语言,或者了解面向对象编程,那就立刻开始android编程之旅吧!
Android编程权威指南-(第2版) 目录
第1章 android开发初体验11.1 应用开发基础11.2 创建android项目21.3 android studio使用导航61.4 用户界面设计71.4.1 视图层级结构101.4.2 组件属性111.4.3 创建字符串资源121.4.4 预览界面布局121.5 从布局xml到视图对象131.6 组件的实际应用171.6.1 引用组件181.6.2 设置监听器181.7 创建提示消息201.8 使用模拟器运行应用231.9 深入学习:android编译过程25第2章 android与mvc设计模式292.1 创建新类292.2 android与mvc设计模式322.3 更新视图层342.4 更新控制层362.5 在设备上运行应用402.5.1 连接设备402.5.2 配置设备用于应用开发412.6 添加图标资源422.6.1 向项目中添加资源432.6.2 在xml文件中引用资源452.7 关于挑战练习462.8 挑战练习:为textview添加监听器462.9 挑战练习:添加后退按钮462.10 挑战练习:从按钮到图标按钮47第3章 activity的生命周期493.1 日志跟踪理解activity生命周期503.1.1 输出日志信息503.1.2 使用logcat523.2 设备旋转与activity生命周期553.3 设备旋转前保存数据593.4 再探activity生命周期613.5 深入学习:测试onsaveinstance-state(bundle)方法623.6 深入学习:日志记录的级别与方法64第4章 android应用的调试654.1 异常与栈跟踪664.1.1 诊断应用异常674.1.2 记录栈跟踪日志684.1.3 设置断点694.1.4 使用异常断点724.2 android特有的调试工具734.2.1 使用android lint734.2.2 r类的问题75第5章 第二个activity765.1 创建第二个activity775.1.1 创建新的activity785.1.2 创建新的activity子类815.1.3 在manifest配置文件中声明activity815.1.4 为quizactivity添加cheat按钮825.2 启动activity845.3 activity间的数据传递865.3.1 使用intent extra865.3.2 从子activity获取返回结果895.4 activity的使用与管理945.5 挑战练习97第6章 android sdk版本与兼容986.1 android sdk版本986.2 android编程与兼容性问题996.2.1 比较合理的版本996.2.2 sdk*低版本1016.2.3 sdk目标版本1016.2.4 sdk编译版本1016.2.5 安全添加新版本api中的代码1016.3 使用android开发者文档1046.4 挑战练习:报告编译版本106第7章 ui fragment与fragment管理器1077.1 ui设计的灵活性需求1087.2 fragment的引入1087.3 着手开发criminalintent1097.3.1 创建新项目1127.3.2 fragment与支持库1137.3.3 在android studio中增加依赖关系1147.3.4 创建crime类1177.4 托管ui fragment1187.4.1 fragment的生命周期1187.4.2 托管的两种方式1197.4.3 定义容器视图1197.5 创建ui fragment1207.5.1 定义crimefragment的布局1217.5.2 创建crimefragment类1227.6 添加ui fragment到fragment-manager1257.6.1 fragment事务1267.6.2 fragmentmanager与fragment生命周期1297.7 采用fragment的应用架构1307.8 深入学习:为什么应优先使用支持库版fragment1317.9 深入学习:使用操作系统内置版fragment131第8章 使用布局与组件创建用户界面1328.1 升级crime类1328.2 更新布局1338.3 生成并使用组件1358.4 深入探讨xml布局属性1368.4.1 样式、主题及主题属性1368.4.2 dp、sp以及屏幕像素密度1378.4.3 android开发设计原则1388.4.4 布局参数1398.4.5 边距与内边距1398.5 使用图形布局工具1408.5.1 创建水平模式布局1418.5.2 添加新组件1428.5.3 在属性视图中编辑组件属性1438.5.4 在框架视图中重新组织组件1448.5.5 更新子组件的布局参数1458.5.6 android:layout_weight属性的工作原理1468.5.7 图形布局工具使用总结1478.5.8 组件id与多种布局1488.6 挑战练习:日期格式化148第9章 使用recyclerview显示列表1499.1 升级criminalintent应用的模型层1509.2 使用抽象activity托管fragment1539.2.1 通用的fragment托管布局1539.2.2 抽象activity类1549.3 recyclerview、adapter和viewholder1589.3.1 viewholder和adapter1599.3.2 使用recyclerview1619.3.3 实现adapter和viewholder1639.4 定制列表项1669.4.1 创建列表项布局1669.4.2 使用定制列表项视图1689.5 响应点击1709.6 深入学习:listview和gridview1719.7 深入学习:单例171第10章 使用fragmentargument17310.1 从fragment中启动activity17310.1.1 附加extra信息17410.1.2 获取extra信息17510.1.3 使用crime数据更新crimefragment视图17610.1.4 直接获取extra信息的缺点17710.2 fragment argument17710.2.1 附加argument给fragment17810.2.2 获取argument17910.3 刷新显示列表项18010.4 通过fragment获取返回结果18210.5 挑战练习:实现高效的recyclerview刷新18310.6 深入学习:为何要用fragment argument183第11章 使用viewpager18511.1 创建crimepageractivity18611.1.1 viewpager与pageradapter18711.1.2 整合并配置使用crimepageractivity18811.2 fragmentstatepageradapter与fragmentpageradapter19011.3 深入学习:viewpager的工作原理19211.4 深入学习:以代码的方式创建布局193第12章 对话框19412.1 使用appcompat兼容库19512.2 创建dialogfragment19612.2.1 显示dialogfragment19812.2.2 设置对话框的显示内容19912.3 fragment间的数据传递20212.3.1 传递数据给datepicker- fragment20312.3.2 返回数据给crime-fragment20412.4 挑战练习:更多对话框21112.5 挑战练习:按设备类型展现dialogfragment212第13章 工具栏21313.1 appcompat21313.2 工具栏菜单21613.2.1 在xml文件中定义菜单21713.2.2 创建菜单22113.2.3 响应菜单项选择22313.3 实现层级式导航22513.4 可选菜单项22613.4.1 切换菜单项标题22713.4.2“还有个问题”22913.5 深入学习:工具栏与操作栏23113.6 挑战练习:删除crime记录23113.7 挑战练习:优化字符串资源显示23113.8 挑战练习:用于recyclerview的空视图232第14章 sqlite数据库23314.1 定义schema23314.2 创建初始数据库23414.3 修改crimelab类23814.4 写入数据库23914.4.1 使用contentvalues23914.4.2 插入和更新记录24014.5 读取数据库24214.5.1 使用cursorwrapper24314.5.2 创建模型层对象24414.6 深入学习:数据库高级主题介绍24714.7 深入学习:应用上下文24814.8 挑战练习:删除crime记录248第15章 隐式intent24915.1 添加按钮组件25015.2 添加嫌疑人信息至模型层25215.3 使用格式化字符串25415.4 使用隐式intent25515.4.1 隐式intent的组成25515.4.2 发送消息25615.4.3 获取联系人信息25915.4.4 检查可响应任务的activity26315.5 挑战练习:sharecompat26515.6 挑战练习:又一个隐式intent265第16章 使用intent拍照26616.1 布置照片26616.2 外部存储26916.3 使用相机intent27216.3.1 外部存储使用权限27216.3.2 触发拍照27316.4 缩放和显示位图27416.5 功能声明27716.6 深入学习:使用include标签27816.7 挑战练习:优化照片显示27816.8 挑战练习:优化缩略图加载279第17章 master-detail用户界面28017.1 增加布局灵活性28117.1.1 修改singlefragment- activity28217.1.2 创建包含两个fragment容器的布局28317.1.3 使用别名资源28417.1.4 创建平板设备专用可选资源28517.2 activity:fragment的托管者28617.3 深入学习:设备屏幕尺寸的确定295第18章 assets29718.1 为何使用assets29718.2 创建beatbox应用29818.3 导入assets30118.4 处理assets30318.5 使用assets30518.6 访问assets30818.7 深入学习:什么是non-assets308第19章 使用soundpool播放音频30919.1 创建soundpool30919.2 加载音频文件31019.3 播放音频31119.4 释放音频31319.5 设备旋转和对象保存31419.5.1 保留fragment31519.5.2 旋转和已保留fragment31619.6 深入学习:是否要保留31819.7 深入学习:设备旋转处理再探318第20章 样式与主题32120.1 颜色资源32120.2 样式32220.3 主题32420.4 添加主题颜色32720.5 覆盖主题属性32820.6 修改按钮属性33220.7 深入学习:样式继承拾遗33420.8 深入学习:引用主题属性33520.9 挑战练习:创建多版本主题335第21章 xml drawable33621.1 统一按钮样式33721.2 shape drawable33821.3 state list drawable34021.4 layer list drawable34121.5 深入学习:为什么要用xml drawable34221.6 深入学习:使用9-patch图像34321.7 深入学习:使用mipmap图像347第22章 深入学习intent和任务34822.1 创建nerdlauncher项目34822.2 解析隐式intent35122.3 在运行时创建显式intent35522.4 任务与后退栈35722.4.1 在任务间切换35722.4.2 启动新任务35822.5 使用nerdlauncher应用作为设备主屏幕36122.6 挑战练习:应用图标36222.7 深入学习:进程与任务36222.8 深入学习:并发文档364第23章 http与后台任务36723.1 创建photogallery应用36823.2 网络连接基本37123.3 使用asynctask在后台线程上运行代码37323.4 线程与主线程37423.5 从flickr获取json数据37623.6 从asynctask回到主线程38323.7 清理asynctask38623.8 深入学习:asynctask再探38723.9 深入学习:asynctask的替代方案38823.10 挑战练习:gson38823.11 挑战练习:分页38823.12 挑战练习:动态调整网格列389第24章 looper、handler和handlerthread39024.1 配置recyclerview以显示图片39024.2 批量下载缩略图39324.3 与主线程通信39324.4 创建并启动后台线程39424.5 message与message handler39624.5.1 消息的剖析39724.5.2 handler的剖析39724.5.3 使用handler39824.5.4 传递handler40224.6 深入学习:asynctask与线程40724.7 挑战练习:预加载以及缓存40724.8 深入学习:解决图片下载问题408第25章 搜索40925.1 搜索flickr网站41025.2 使用searchview41425.3 使用shared preferences实现轻量级数据存储41925.4 优化应用42225.5 挑战练习:深度优化photogallery应用423第26章 后台服务42426.1 创建intentservice42426.2 服务的作用42726.3 查找*新返回结果42826.4 使用alarmmanager延迟运行服务43026.4.1 合理控制服务启动的频度43226.4.2 pendingintent43326.4.3 使用pendingintent管理定时器43426.5 控制定时器43426.6 通知信息43726.7 挑战练习:可穿戴设备上的通知43926.8 深入学习:服务细节内容44026.8.1 服务的能与不能44026.8.2 服务的生命周期44026.8.3 non-sticky服务44026.8.4 sticky服务44126.8.5 绑定服务44126.9 深入学习:jobscheduler和jobservice44226.10 深入学习:sync adapter44526.11 挑战练习:在lollipop设备上使用jobservice446第27章 broadcast intent44727.1 一般intent和broadcast intent44727.2 接收系统broadcast:重启后唤醒44827.2.1 standalone receiver44827.2.2 使用receiver45027.3 过滤前台通知消息45227.3.1 发送broadcast intent45227.3.2 动态broadcast receiver45327.3.3 使用私有权限45527.3.4 使用有序broadcast45827.4 receiver与长时运行任务46227.5 深入学习:本地事件46227.5.1 使用eventbus46327.5.2 使用rxjava46327.6 深入学习:检测fragment的状态464第28章 网页浏览46628.1 *后一段flickr数据46628.2 简单方式:隐式intent46928.3 较难方式:使用webview47028.4 处理webview的设备旋转问题47628.5 深入学习:注入javascript对象47728.6 深入学习:kitkat的webview47828.7 挑战练习:使用后退键浏览历史网页47828.8 挑战练习:非http链接支持479第29章 定制视图与触摸事件48029.1 创建draganddraw项目48029.1.1 创建draganddraw-activity48129.1.2 创建draganddraw-fragment48129.2 创建定制视图48229.3 处理触摸事件48429.4 ondraw(...)方法内的图形绘制48829.5 挑战练习:设备旋转问题49029.6 挑战练习:旋转矩形框490第30章 属性动画49230.1 建立场景49230.2 简单属性动画49530.2.1 视图属性转换49830.2.2 使用不同的interpolator50030.2.3 色彩渐变50030.3 播放多个动画50230.4 深入学习:其他动画api50430.4.1 传统动画工具50430.4.2 转场50430.5 挑战练习504第31章 地理位置和play服务50531.1 地理位置和定位类库50531.2 创建locatr项目50631.3 play服务和模拟器50731.4 创建locatr应用51031.5 配置google play服务51231.6 使用google play服务51431.7 基于地理位置的flickr搜索51631.8 获取定位数据51731.9 寻找并显示图片51931.10 挑战练习:进度指示器521第32章 使用地图52232.1 导入play地图服务库52232.2 android上的地图服务52232.3 地图api设置52332.4 创建地图52532.5 获取更多地理位置数据52632.6 使用地图52932.7 深入学习:团队开发和api key534第33章 material design53633.1 material surface53633.1.1 elevation和z值53833.1.2 state list animator53933.2 动画工具54033.2.1 circular reveal54133.2.2 shared element transition54233.3 新的视图组件54533.3.1 card54533.3.2 floating action button54733.3.3 snackbar54833.4 深入学习material design549第34章 编后语55034.1 终极挑战55034.2 关于我们55134.3 致谢551
Android编程权威指南-(第2版) 相关资料
“对我们来说,这是一本非常全面的培训教材,它已使我们公司数百名工程师掌握了构建android应用的诀窍。另外,对想要提升android开发技能的人,这本书同样也有很大帮助。”——mike shaver,facebook通信工程主管“不管你是刚刚迈进android开发的大门,还是准备掌握更多高级开发技术,本书都非常值得看。其完整的内容体系、清晰的组织结构以及轻松的讲述风格,都让人过目不忘。”——james steele,《android开发秘籍》作者“整本书的内容编排非常人性化!每个例程都从一个简单的activity开始,一步一步地往里面添加新的功能,每一步都讲解得细致入微,然后在读者的面前,慢慢变得强大起来。可以说,每个例程都是从开发者的角度开始,遵循一套科学的开发流程,最后变成一个功能强大的应用程序。与此同时,需要掌握的开发技巧也就融合进去了。”——亚马逊读者评论“知识点讲解得很全面,通过实际示例练习逐步上手。章节末尾的挑战练习和深入学习非常到位,遇到自己暂时无法解决的问题也可以去官网论坛上同其他读者交流讨论。读完此书后,我的android应用开发技能有了很大提高。” ——亚马逊读者评论“每一章都是实打实的例子,由小到大、由浅入深,顺序安排得很贴心,让人学得很舒服,是迄今为止看到过的最好的教程。难能可贵的一点是,每个例子的代码规范都很棒。”——亚马逊读者评论
Android编程权威指南-(第2版) 作者简介
Bill PhillipsBig Nerd Ranch资深讲师。他在Big Nerd Ranch与人合作开发了广受好评的Android训练营培训课程,并为之编写教材(包括本书第1版)。此后,Bill一直坚持撰写博客、阅读各类文学作品、作曲奏乐以及著书。Chris StewartBig Nerd Ranch资深Android训练营讲师、Android团队主管。他致力于不断取得进步,精进技能。不坐在电脑前时,Chris喜欢远足和旅行。Brian HardyBig Nerd Ranch的iOS和Cocoa工程主管。他是Android训练营的首批讲师,与许多客户合作开发了众多Android和iOS移动应用。除同开发团队构建更出色的软件和研究自己最新的项目之外,Brian喜欢陪伴朋友与家人——通常是在烧烤架旁。Kristin MarsicanoBig Nerd Ranch资深讲师、Android开发者。她喜欢与他人分享知识,对学习、软件开发以及二者的交集充满热情。在授课和开发应用之余,Kristin会为家人烹调美食、练习瑜伽或学习一些新知识。