小苏子
小苏子PDF在线图书

Android编程权威指南(第3版) 内容简介

Android编程权威指南(第3版) 内容简介

Android编程权威指南(第3版) 目录

Android编程权威指南(第3版) 精彩文摘

Big Nerd Ranch是美国一家专业的移动开发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程权威指南。全书共36章,详细介绍了8个Android应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。第3版较之前版本增加了对数据绑定等新工具的介绍,同时新增了针对单元测试、辅助功能和MVVM架构等主题的章节。第1章 Android 开发初体验 11.1 Android 开发基础 21.2 创建Android 项目 21.3 Android Studio 使用导航 61.4 用户界面设计 61.4.1 视图层级结构 101.4.2 组件属性 101.4.3 创建字符串资源 111.4.4 预览布局 121.5 从布局XML 到视图对象 131.6 组件的实际应用 161.6.1 引用组件 171.6.2 设置监听器171.7 创建提示消息 191.8 使用模拟器运行应用 211.9 深入学习:Android 编译过程 231.10 关于挑战练习 251.11 挑战练习:定制toast 消息 25第2章 Android 与MVC 设计模式 262.1 创建新类 262.2 Android 与MVC 设计模式 292.3 更新视图层 312.4 更新控制器层 332.5 在物理设备上运行应用 372.5.1 连接设备 372.5.2 配置设备用于应用开发 72.6 添加图标资源 382.6.1 向项目中添加资源 392.6.2 在XML 文件中引用资源 412.7 挑战练习:为TextView 添加监听器 422.8 挑战练习:添加后退按钮 422.9 挑战练习:从按钮到图标按钮 42第3章 activity 的生命周期 453.1 日志跟踪理解activity 生命周期 463.1.1 输出日志信息 463.1.2 使用LogCat 483.1.3 activity 生命周期实例解析 503.2 设备旋转与activity 生命周期 523.3 保存数据以应对设备旋转 563.4 再探activity 生命周期 583.5 深入学习:activity 内存清理现状 593.6 深入学习:日志记录的级别与方法 603.7 挑战练习:禁止一题多答 613.8 挑战练习:评分 61第4章 Android 应用的调试 624.1 异常与栈跟踪 634.1.1 诊断应用异常 644.1.2 记录栈跟踪日志 654.1.3 设置断点 664.1.4 使用异常断点 684.2 Android 特有的调试工具 704.2.1 使用Android Lint 704.2.2 R类的问题 714.3 挑战练习:探索布局检查器 724.4 挑战练习:探索内存分配跟踪 72第5章 第二个activity 745.1 创建第二个activity 755.1.1 创建新的activity 755.1.2 创建新的activity子类 785.1.3 在manifest配置文件中声明activity 785.1.4 为QuizActivity 添加CHEAT按钮 795.2 启动activity 815.3 activity间的数据传递 835.3.1 使用intent extra 835.3.2 从子activity获取返回结果 865.4 activity 的使用与管理 915.5 挑战练习:堵住漏洞 93第6章 Android SDK版本与兼容 946.1 Android SDK版本 946.2 Android编程与兼容性问题 956.2.1 比较合理的版本 956.2.2 SDK最低版本 966.2.3 SDK目标版本 976.2.4 SDK编译版本 976.2.5 安全添加新版本API中的代码 976.3 使用Android开发者文档 1006.4 挑战练习:报告编译版本 1016.5 挑战练习:限制作弊次数 102第7章 UI fragment 与fragment管理器 1037.1 UI设计的灵活性需求 1047.2 引入fragment 1047.3 着手开发CriminalIntent 1057.3.1 创建新项目 1077.3.2 两类fragment 1087.3.3 在Android Studio中增加依赖关系 1087.3.4 创建Crime类 1117.4 托管UI fragment 1127.4.1 fragment的生命周期 1127.4.2 托管的两种方式 1137.4.3 定义容器视图 1137.5 创建UI fragment 1157.5.1 定义CrimeFragment的布局 1157.5.2 创建CrimeFragment类 1177.6 向FragmentManager添加UI fragment 1227.6.1 fragment事务 1237.6.2 FragmentManager 与fragment生命周期 1257.7 采用fragment的应用架构 1267.8 深入学习:fragment与支持库 1277.9 深入学习:为什么优先使用支持库版fragment 128第8章 使用RecyclerView显示列表 1298.1 升级CriminalIntent应用的模型层 1308.2 使用抽象activity托管fragment 1328.2.1 通用型fragment托管布局 1338.2.2 抽象activity类 1338.3 RecyclerView、ViewHolder 和Adapter 1378.3.1 ViewHolder和Adapter 1388.3.2 使用RecyclerView 1418.3.3 列表项视图 1428.3.4 实现ViewHolder和Adapter 1438.4 绑定列表项 1458.5 响应点击 1478.6 深入学习:ListView和GridView 1488.7 深入学习:单例 1488.8 挑战练习:RecyclerView ViewType 149第9章 使用布局与组件创建用户界面 1509.1 使用图形布局工具 1519.2 引入ConstraintLayout 1519.2.1 使用ConstraintLayout 1529.2.2 约束编辑器 1539.2.3 腾出空间 1559.2.4 添加组件 1579.2.5 约束的XML形式 1599.2.6 编辑属性 1609.2.7 动态设置列表项 1629.3 深入学习布局属性 1639.3.1 dp、sp以及屏幕像素密度 1639.3.2 边距与内边距 1659.3.3 样式、主题及主题属性 1669.3.4 Android应用的设计原则 1669.4 图形布局工具使用小结 1679.5 挑战练习:日期格式化 167第10章 使用fragment argument 16810.1 从fragment 中启动activity 16810.1.1 附加extra信息 16910.1.2 获取extra信息 17010.1.3 使用Crime数据更新CrimeFragment视图 17110.1.4 直接获取extra信息的缺点 17210.2 fragment argument 17210.2.1 附加argument给fragment 17310.2.2 获取argument 17410.3 刷新显示列表项 17410.4 通过fragment获取返回结果 17610.5 深入学习:为何要用fragment argument 17710.6 挑战练习:实现高效的RecyclerView刷新 17810.7 挑战练习:优化CrimeLab的表现 178第11章 使用ViewPager 17911.1 创建CrimePagerActivity 18011.1.1 ViewPager与PagerAdapter 18111.1.2 整合并配置使用CrimePagerActivity 18211.2 FragmentStatePagerAdapter与FragmentPagerAdapter 18411.3 深入学习:ViewPager的工作原理 18611.4 深入学习:以代码的方式创建视图 18711.5 挑战练习:恢复CrimeFragment的边距 18711.6 挑战练习:添加Jump to First按钮和Jump to Last按钮 188第12章 对话框 18912.1 创建DialogFragment 19012.1.1 显示DialogFragment 19212.1.2 设置对话框的显示内容 19412.2 fragment间的数据传递 19612.2.1 传递数据给DatePickerFragment 19712.2.2 返回数据给CrimeFragment 19912.3 挑战练习:更多对话框 20512.4 挑战练习:实现响应式DialogFragment 205第13章 工具栏 20713.1 AppCompat 20713.2 工具栏菜单 20913.2.1 在XML文件中定义菜单 21013.2.2 创建菜单 21413.2.3 响应菜单项选择 21713.3 实现层级式导航 21813.4 可选菜单项 21913.4.1 切换菜单项标题 22013.4.2 “还有个问题” 22213.5 深入学习:工具栏与操作栏 22413.6 挑战练习:删除crime记录 22413.7 挑战练习:复数字符串资源 22413.8 挑战练习:用于RecyclerView的空视图 225第14章 SQLite数据库 22614.1 定义schema 22614.2 创建初始数据库 22714.2.1 使用Android Device Monitor查看文件 23014.2.2 处理数据库相关问题 23114.3 修改CrimeLab类 23214.4 写入数据库 23314.4.1 使用ContentValues 23314.4.2 插入和更新记录 23414.5 读取数据库 23514.5.1 使用CursorWrapper 23614.5.2 创建模型层对象 23814.6 深入学习:数据库高级主题介绍 24114.7 深入学习:应用上下文 24114.8 挑战练习:删除crime记录 242第15章 隐式intent 24315.1 添加按钮组件 24415.2 添加嫌疑人信息至模型层 24415.3 使用格式化字符串 24615.4 使用隐式intent 24815.4.1 隐式intent的组成 24815.4.2 发送消息 24915.4.3 获取联系人信息 25215.4.4 检查可响应任务的activity 25415.5 挑战练习:ShareCompat 25615.6 挑战练习:又一个隐式intent 256第16章 使用intent拍照 25816.1 布置照片 25816.2 文件存储 26016.2.1 使用FileProvider 26116.2.2 指定照片存放位置 26216.3 使用相机intent 26316.4 缩放和显示位图 26516.5 功能声明 26816.6 挑战练习:优化照片显示 26916.7 挑战练习:优化缩略图加载 269第17章 双版面主从用户界面 27017.1 增加布局灵活性 27117.1.1 修改SingleFragmentActivity 27217.1.2 创建包含两个fragment容器的布局 27217.1.3 使用别名资源 27417.1.4 创建平板设备专用可选资源 27517.2 activity:fragment的托管者 27617.3 深入学习:设备屏幕尺寸的确定 28417.4 挑战练习:添加滑动删除功能 285第18章 应用本地化 28618.1 资源本地化 28618.1.1 默认资源 28918.1.2 检查资源本地化完成情况 29118.1.3 区域修饰符 29218.2 配置修饰符 29418.2.1 可用资源优先级排定 29518.2.2 多重配置修饰符 29618.2.3 寻找最匹配的资源 29718.3 测试备选资源 29818.4 挑战练习:日期本地化 298第19章 Android辅助功能 29919.1 TalkBack 29919.1.1 点击浏览 30119.1.2 线性浏览 30119.2 实现非文字型元素可读 30319.2.1 添加内容描述 30319.2.2 实现组件可聚焦 30519.3 提升辅助体验 30519.4 深入学习:使用辅助功能扫描器 30919.5 挑战练习:优化列表项 31119.6 挑战练习:补全上下文信息 31119.7 挑战练习:事件主动通知 311第20章 数据绑定与MVVM 31320.1 为何要用MVVM 架构 31420.2 创建BeatBox应用 31420.3 导入assets 31920.4 处理assets 32120.5 使用assets 32320.6 绑定数据 32520.6.1 创建视图模型 32720.6.2 绑定至视图模型 32820.6.3 绑定数据观察 33020.7 访问assets 33220.8 深入学习:数据绑定再探 33320.8.1 lambda表达式 33320.8.2 更多语法糖 33320.8.3 BindingAdapter 33320.9 深入学习:为何使用assets 33420.10 深入学习:什么是non-assets 334第21章 音频播放与单元测试 33521.1 创建SoundPool 33521.2 加载音频文件 33621.3 播放音频 33721.4 添加测试依赖 33821.5 创建测试类 33921.6 实现测试类34121.7 编写测试方法 34221.8 数据绑定回调 34621.9 释放音频 34621.10 设备旋转和对象保存 34721.10.1 保留fragment 34821.10.2 设备旋转和已保留的fragment 34921.11 深入学习:是否保留fragment 35121.12 深入学习:Espresso与整合测试 35121.13 深入学习:虚拟对象与测试 35221.14 挑战练习:播放进度控制 353第22章 样式与主题 35422.1 颜色资源 35422.2 样式 35522.3 主题 35722.4 添加主题颜色 35922.5 覆盖主题属性 36122.6 修改按钮属性 36422.7 深入学习:样式继承拾遗 36722.8 深入学习:引用主题属性 367第23章 XML drawable 36823.1 统一按钮样式 36823.2 shape drawable 36923.3 state list drawable 37123.4 layer list drawable 37223.5 深入学习:为什么要用XML drawable 37323.6 深入学习:使用mipmap图像 37423.7 深入学习:使用9-patch图像 37523.8 挑战练习:按钮主题 379第24章 深入学习intent和任务 38024.1 创建NerdLauncher项目 38024.2 解析隐式intent 38224.3 在运行时创建显式intent 38624.4 任务与回退栈 38824.4.1 在任务间切换 38924.4.2 启动新任务 38924.5 使用NerdLauncher应用作为设备主屏幕 39224.6 挑战练习:应用图标 39324.7 深入学习:进程与任务 39324.8 深入学习:并发文档 395第25章 HTTP与后台任务 39825.1 创建PhotoGallery应用 39925.2 网络连接基本 40125.3 使用AsyncTask在后台线程上运行代码 40325.4 线程与主线程 40525.5 从Flickr获取JSON数据 40725.6 从AsyncTask回到主线程 41325.7 清理AsyncTask 41625.8 深入学习:AsyncTask再探 41625.9 深入学习:AsyncTask的替代方案 41725.10 挑战练习:Gson 41825.11 挑战练习:分页 41825.12 挑战练习:动态调整网格列 418第26章 Looper、Handler和HandlerThread 42026.1 配置RecyclerView以显示图片 42026.2 批量下载缩略图 42226.3 与主线程通信 42326.4 创建并启动后台线程 42426.5 Message 与message handler 42626.5.1 剖析Message 42626.5.2 剖析Handler 42726.5.3 使用handler 42826.5.4 传递handler 43126.6 深入学习:AsyncTask与线程 43626.7 深入学习:解决图片下载问题 43626.8 深入学习:StrictMode 43726.9 挑战练习:预加载以及缓存 438第27章 搜索 43927.1 搜索Flickr网站 43927.2 使用SearchView 44327.3 使用shared preferences实现轻量级数据存储 44727.4 优化应用 45127.5 挑战练习:深度优化PhotoGallery应用 451第28章 后台服务 45228.1 创建IntentService 45228.2 服务的作用 45428.3 查找最新返回结果 45628.4 使用AlarmManager延迟运行服务 45828.4.1 合理控制服务启动的频度 46028.4.2 PendingIntent 46128.4.3 使用PendingIntent管理定时器 46128.5 控制定时器 46228.6 通知信息 46428.7 挑战练习:可穿戴设备上的通知 46628.8 深入学习:服务之细节 46728.8.1 服务的能与不能 46728.8.2 服务的生命周期 46728.8.3 non-sticky服务 46728.8.4 sticky服务 46828.8.5 绑定服务 46828.9 深入学习:JobScheduler 和JobService 46928.10 挑战练习:在Lollipop设备上使用JobService 47228.11 深入学习:sync adapter 472第29章 broadcast intent 47429.1 普通intent和broadcast intent 47429.2 接收系统broadcast:重启后唤醒 47529.2.1 创建并登记standalone receiver 47529.2.2 使用receiver 47729.3 过滤前台通知消息 47929.3.1 发送broadcast intent 47929.3.2 创建并登记动态receiver 48029.3.3 使用私有权限限制broadcast 48229.3.4 使用有序broadcast收发数据 48429.4 receiver与长时运行任务 48829.5 深入学习:本地事件 48829.5.1 使用EventBus 48929.5.2 使用RxJava 49029.6 深入学习:探测fragment的状态 490第30章 网页浏览 49230.1 最后一段Flickr数据 49230.2 简单方式:隐式intent 49430.3 较难方式:使用WebView 49630.4 处理WebView的设备旋转问题 50230.5 深入学习:注入JavaScript对象 50230.6 深入学习:WebView升级 50330.7 挑战练习:使用后退键浏览历史网页 50430.8 挑战练习:非HTTP链接支持 504第31章 定制视图与触摸事件 50531.1 创建DragAndDraw项目 50531.2 创建定制视图 50731.3 处理触摸事件 50931.4 onDraw(...)方法内的图形绘制 51331.5 挑战练习:设备旋转问题 51531.6 挑战练习:旋转矩形框 515第32章 属性动画 51632.1 建立场景 51632.2 简单属性动画 51932.2.1 视图属性转换 52132.2.2 使用不同的interpolator 52332.2.3 色彩渐变 52332.3 播放多个动画 52532.4 深入学习:其他动画API 52732.4.1 传统动画工具 52732.4.2 转场 52732.5 挑战练习 527第33章 地理位置和Play服务 52833.1 地理位置和定位类库 52833.2 创建Locatr项目 52933.3 Play服务定位和模拟器 53033.4 创建Locatr应用 53233.5 配置Google Play服务 53433.6 使用Google Play服务 53633.7 基于地理位置的Flickr搜索 53833.8 获取定位数据 53933.9 获取运行时权限 54233.10 寻找并显示图片 54633.11 挑战练习:权限使用理由 54833.12 挑战练习:进度指示器 549第34章 使用地图 55034.1 导入Play地图服务库 55034.2 Android上的地图服务 55034.3 获取Maps API key 55034.4 创建地图 55234.5 获取更多地理位置数据 55334.6 使用地图 55634.7 深入学习:团队开发和API key 560第35章 material design 56235.1 material surface 56235.1.1 elevation和Z值 56435.1.2 state list animator 56535.2 动画工具 56635.2.1 circular reveal 56735.2.2 shared element transition 56835.3 新的视图组件 57135.3.1 card 57135.3.2 floating action button 57235.3.3 snackbar 57335.4 深入学习material design 574第36章 编后语 57536.1 终极挑战 57536.2 关于我们 57536.3 致谢 576左边是项目工具窗口(project tool window),通过它可以查看和管理所有与项目相关的文件。主视图是代码编辑区(editor)。为便于开发,Android Studio已在代码编辑区打开了QuizActivity. java文件。点击工作区窗口左边、右边以及底部标有各种名称的工具按钮区域,可显示或隐藏各类工具窗口。当然,也可以直接使用它们对应的快捷键。假如看不到某个工具按钮的话,可以点击左下角的灰色方形区域或单击View → Tool Buttons菜单项找到它。

赞(0)
未经允许不得转载:小苏子图书 » Android编程权威指南(第3版) 内容简介