第一行代码 Android 第2版 🔍
郭霖著
北京:人民邮电出版社, 2016
中文 [zh] · PDF · 88.1MB · 2016 · 📗 未知类型的图书 · 🚀/upload · Save
备选作者
Pdg2Pic
元数据中的注释
producers:
FreePic2Pdf_Lib - v3.07
FreePic2Pdf_Lib - v3.07
元数据中的注释
Bookmarks: p1 (p1): 第1章 开始启程——你的第一行Android代码
p1-1 (p2): 1.1 了解全貌——Android王国简介
p1-1-1 (p2): 1.1.1 Android系统架构
p1-1-2 (p3): 1.1.2 Android已发布的版本
p1-1-3 (p4): 1.1.3 Android应用开发特色
p1-2 (p5): 1.2 手把手带你搭建开发环境
p1-2-1 (p5): 1.2.1 准备所需要的工具
p1-2-2 (p5): 1.2.2 搭建开发环境
p1-3 (p9): 1.3 创建你的第一个Android项目
p1-3-1 (p9): 1.3.1 创建HelloWorld项目
p1-3-2 (p12): 1.3.2 启动模拟器
p1-3-3 (p15): 1.3.3 运行HelloWorld
p1-3-4 (p16): 1.3.4 分析你的第一个Android程序
p1-3-5 (p22): 1.3.5 详解项目中的资源
p1-3-6 (p23): 1.3.6 详解build.gradle文件
p1-4 (p26): 1.4 前行必备——掌握日志工具的使用
p1-4-1 (p26): 1.4.1 使用Android的日志工具Log
p1-4-2 (p27): 1.4.2 为什么使用Log而不使用System.out
p1-5 (p29): 1.5 小结与点评
p2 (p30): 第2章 先从看得到的入手——探究活动
p2-1 (p30): 2.1 活动是什么
p2-2 (p30): 2.2 活动的基本用法
p2-2-1 (p31): 2.2.1 手动创建活动
p2-2-2 (p32): 2.2.2 创建和加载布局
p2-2-3 (p35): 2.2.3 在AndroidManifest文件中注册
p2-2-4 (p37): 2.2.4 在活动中使用Toast
p2-2-5 (p38): 2.2.5 在活动中使用Menu
p2-2-6 (p40): 2.2.6 销毁一个活动
p2-3 (p41): 2.3 使用Intent在活动之间穿梭
p2-3-1 (p41): 2.3.1 使用显式Intent
p2-3-2 (p44): 2.3.2 使用隐式Intent
p2-3-3 (p46): 2.3.3 更多隐式Intent的用法
p2-3-4 (p50): 2.3.4 向下一个活动传递数据
p2-3-5 (p51): 2.3.5 返回数据给上一个活动
p2-4 (p53): 2.4 活动的生命周期
p2-4-1 (p53): 2.4.1 返回栈
p2-4-2 (p54): 2.4.2 活动状态
p2-4-3 (p55): 2.4.3 活动的生存期
p2-4-4 (p56): 2.4.4 体验活动的生命周期
p2-4-5 (p62): 2.4.5 活动被回收了怎么办
p2-5 (p63): 2.5 活动的启动模式
p2-5-1 (p64): 2.5.1 standard
p2-5-2 (p65): 2.5.2 singleTop
p2-5-3 (p67): 2.5.3 singleTask
p2-5-4 (p68): 2.5.4 singleInstance
p2-6 (p71): 2.6 活动的最佳实践
p2-6-1 (p71): 2.6.1 知晓当前是在哪一个活动
p2-6-2 (p72): 2.6.2 随时随地退出程序
p2-6-3 (p74): 2.6.3 启动活动的最佳写法
p2-7 (p75): 2.7 小结与点评
p3 (p76): 第3章 软件也要拼脸蛋——UI开发的点点滴滴
p3-1 (p76): 3.1 如何编写程序界面
p3-2 (p77): 3.2 常用控件的使用方法
p3-2-1 (p77): 3.2.1 TextView
p3-2-2 (p80): 3.2.2 Button
p3-2-3 (p82): 3.2.3 EditText
p3-2-4 (p86): 3.2.4 ImageView
p3-2-5 (p88): 3.2.5 ProgressBar
p3-2-6 (p91): 3.2.6 AlertDialog
p3-2-7 (p93): 3.2.7 ProgressDialog
p3-3 (p94): 3.3 详解4种基本布局
p3-3-1 (p94): 3.3.1 线性布局
p3-3-2 (p100): 3.3.2 相对布局
p3-3-3 (p103): 3.3.3 帧布局
p3-3-4 (p105): 3.3.4 百分比布局
p3-4 (p108): 3.4 系统控件不够用?创建自定义控件
p3-4-1 (p109): 3.4.1 引入布局
p3-4-2 (p111): 3.4.2 创建自定义控件
p3-5 (p113): 3.5 最常用和最难用的控件——ListView
p3-5-1 (p114): 3.5.1 ListView的简单用法
p3-5-2 (p115): 3.5.2 定制ListView的界面
p3-5-3 (p119): 3.5.3 提升ListView的运行效率
p3-5-4 (p120): 3.5.4 ListView的点击事件
p3-6 (p122): 3.6 更强大的滚动控件——RecyclerView
p3-6-1 (p122): 3.6.1 RecyclerView的基本用法
p3-6-2 (p125): 3.6.2 实现横向滚动和瀑布流布局
p3-6-3 (p130): 3.6.3 RecyclerView的点击事件
p3-7 (p132): 3.7 编写界面的最佳实践
p3-7-1 (p132): 3.7.1 制作Nine-Patch图片
p3-7-2 (p135): 3.7.2 编写精美的聊天界面
p3-8 (p141): 3.8 小结与点评
p4 (p142): 第4章 手机平板要兼顾——探究碎片
p4-1 (p142): 4.1 碎片是什么
p4-2 (p144): 4.2 碎片的使用方式
p4-2-1 (p144): 4.2.1 碎片的简单用法
p4-2-2 (p147): 4.2.2 动态添加碎片
p4-2-3 (p150): 4.2.3 在碎片中模拟返回栈
p4-2-4 (p151): 4.2.4 碎片和活动之间进行通信
p4-3 (p151): 4.3 碎片的生命周期
p4-3-1 (p151): 4.3.1 碎片的状态和回调
p4-3-2 (p153): 4.3.2 体验碎片的生命周期
p4-4 (p156): 4.4 动态加载布局的技巧
p4-4-1 (p156): 4.4.1 使用限定符
p4-4-2 (p159): 4.4.2 使用最小宽度限定符
p4-5 (p160): 4.5 碎片的最佳实践——一个简易版的新闻应用
p4-6 (p169): 4.6 小结与点评
p5 (p170): 第5章 全局大喇叭——详解广播机制
p5-1 (p170): 5.1 广播机制简介
p5-2 (p171): 5.2 接收系统广播
p5-2-1 (p171): 5.2.1 动态注册监听网络变化
p5-2-2 (p174): 5.2.2 静态注册实现开机启动
p5-3 (p177): 5.3 发送自定义广播
p5-3-1 (p177): 5.3.1 发送标准广播
p5-3-2 (p179): 5.3.2 发送有序广播
p5-4 (p183): 5.4 使用本地广播
p5-5 (p185): 5.5 广播的最佳实践——实现强制下线功能
p5-6 (p192): 5.6 Git时间——初识版本控制工具
p5-6-1 (p192): 5.6.1 安装Git
p5-6-2 (p193): 5.6.2 创建代码仓库
p5-6-3 (p195): 5.6.3 提交本地代码
p5-7 (p195): 5.7 小结与点评
p6 (p196): 第6章 数据存储全方案——详解持久化技术
p6-1 (p196): 6.1 持久化技术简介
p6-2 (p197): 6.2 文件存储
p6-2-1 (p197): 6.2.1 将数据存储到文件中
p6-2-2 (p201): 6.2.2 从文件中读取数据
p6-3 (p203): 6.3 SharedPreferences存储
p6-3-1 (p203): 6.3.1 将数据存储到SharedPreferences中
p6-3-2 (p206): 6.3.2 从SharedPreferences中读取数据
p6-3-3 (p208): 6.3.3 实现记住密码功能
p6-4 (p211): 6.4 SQLite数据库存储
p6-4-1 (p211): 6.4.1 创建数据库
p6-4-2 (p216): 6.4.2 升级数据库
p6-4-3 (p219): 6.4.3 添加数据
p6-4-4 (p222): 6.4.4 更新数据
p6-4-5 (p224): 6.4.5 删除数据
p6-4-6 (p225): 6.4.6 查询数据
p6-4-7 (p228): 6.4.7 使用SQL操作数据库
p6-5 (p229): 6.5 使用LitePal操作数据库
p6-5-1 (p229): 6.5.1 LitePal简介
p6-5-2 (p230): 6.5.2 配置LitePal
p6-5-3 (p231): 6.5.3 创建和升级数据库
p6-5-4 (p236): 6.5.4 使用LitePal添加数据
p6-5-5 (p237): 6.5.5 使用LitePal更新数据
p6-5-6 (p240): 6.5.6 使用LitePal删除数据
p6-5-7 (p241): 6.5.7 使用LitePal查询数据
p6-6 (p243): 6.6 小结与点评
p7 (p244): 第7章 跨程序共享数据——探究内容提供器
p7-1 (p244): 7.1 内容提供器简介
p7-2 (p245): 7.2 运行时权限
p7-2-1 (p245): 7.2.1 Android权限机制详解
p7-2-2 (p249): 7.2.2 在程序运行时申请权限
p7-3 (p254): 7.3 访问其他程序中的数据
p7-3-1 (p254): 7.3.1 ContentResolver的基本用法
p7-3-2 (p256): 7.3.2 读取系统联系人
p7-4 (p260): 7.4 创建自己的内容提供器
p7-4-1 (p261): 7.4.1 创建内容提供器的步骤
p7-4-2 (p265): 7.4.2 实现跨程序数据共享
p7-5 (p275): 7.5 Git时间——版本控制工具进阶
p7-5-1 (p275): 7.5.1 忽略文件
p7-5-2 (p276): 7.5.2 查看修改内容
p7-5-3 (p278): 7.5.3 撤销未提交的修改
p7-5-4 (p279): 7.5.4 查看提交记录
p7-6 (p280): 7.6 小结与点评
p8 (p281): 第8章 丰富你的程序——运用手机多媒体
p8-1 (p281): 8.1 将程序运行到手机上
p8-2 (p283): 8.2 使用通知
p8-2-1 (p283): 8.2.1 通知的基本用法
p8-2-2 (p289): 8.2.2 通知的进阶技巧
p8-2-3 (p291): 8.2.3 通知的高级功能
p8-3 (p293): 8.3 调用摄像头和相册
p8-3-1 (p294): 8.3.1 调用摄像头拍照
p8-3-2 (p298): 8.3.2 从相册中选择照片
p8-4 (p303): 8.4 播放多媒体文件
p8-4-1 (p303): 8.4.1 播放音频
p8-4-2 (p307): 8.4.2 播放视频
p8-5 (p311): 8.5 小结与点评
p9 (p312): 第9章 看看精彩的世界——使用网络技术
p9-1 (p312): 9.1 WebView的用法
p9-2 (p314): 9.2 使用HTTP协议访问网络
p9-2-1 (p315): 9.2.1 使用HttpURLConnection
p9-2-2 (p319): 9.2.2 使用OkHttp
p9-3 (p321): 9.3 解析XML格式数据
p9-3-1 (p324): 9.3.1 Pull解析方式
p9-3-2 (p326): 9.3.2 SAX解析方式
p9-4 (p329): 9.4 解析JSON格式数据
p9-4-1 (p330): 9.4.1 使用JSONObjiect
p9-4-2 (p331): 9.4.2 使用GSON
p9-5 (p334): 9.5 网络编程的最佳实践
p9-6 (p338): 9.6 小结与点评
p10 (p339): 第10章 后台默默的劳动者——探究服务
p10-1 (p339): 10.1 服务是什么
p10-2 (p340): 10.2 Android多线程编程
p10-2-1 (p340): 10.2.1 线程的基本用法
p10-2-2 (p341): 10.2.2 在子线程中更新UI
p10-2-3 (p345): 10.2.3 解析异步消息处理机制
p10-2-4 (p347): 10.2.4 使用AsyncTask
p10-3 (p349): 10.3 服务的基本用法
p10-3-1 (p349): 10.3.1 定义一个服务
p10-3-2 (p352): 10.3.2 启动和停止服务
p10-3-3 (p355): 10.3.3 活动和服务进行通信
p10-4 (p359): 10.4 服务的生命周期
p10-5 (p359): 10.5 服务的更多技巧
p10-5-1 (p359): 10.5.1 使用前台服务
p10-5-2 (p361): 10.5.2 使用IntentService
p10-6 (p365): 10.6 服务的最佳实践——完整版的下载示例
p10-7 (p378): 10.7 小结与点评
p11 (p379): 第11章 Android特色开发——基于位置的服务
p11-1 (p379): 11.1 基于位置的服务简介
p11-2 (p380): 11.2 申请API Key
p11-3 (p384): 11.3 使用百度定位
p11-3-1 (p384): 11.3.1 准备LBS SDK
p11-3-2 (p386): 11.3.2 确定自己位置的经纬度
p11-3-3 (p391): 11.3.3 选择定位模式
p11-3-4 (p393): 11.3.4 看得懂的位置信息
p11-4 (p395): 11.4 使用百度地图
p11-4-1 (p395): 11.4.1 让地图显示出来
p11-4-2 (p397): 11.4.2 移动到我的位置
p11-4-3 (p400): 11.4.3 让“我”显示在地图上
p11-5 (p402): 11.5 Git时间——版本控制工具的高级用法
p11-5-1 (p403): 11.5.1 分支的用法
p11-5-2 (p404): 11.5.2 与远程版本库协作
p11-6 (p406): 11.6 小结与点评
p12 (p407): 第12章 最佳的UI体验——MaterialDesign实战
p12-1 (p407): 12.1 什么是Material Design
p12-2 (p408): 12.2 Toolbar
p12-3 (p415): 12.3 滑动菜单
p12-3-1 (p415): 12.3.1 DrawerLayout
p12-3-2 (p418): 12.3.2 NavigationView
p12-4 (p423): 12.4 悬浮按钮和可交互提示
p12-4-1 (p424): 12.4.1 FloatingActionButton
p12-4-2 (p427): 12.4.2 Snackbar
p12-4-3 (p428): 12.4.3 CoordinatorLayout
p12-5 (p430): 12.5 卡片式布局
p12-5-1 (p431): 12.5.1 CardView
p12-5-2 (p437): 12.5.2 AppBarLayout
p12-6 (p440): 12.6 下拉刷新
p12-7 (p443): 12.7 可折叠式标题栏
p12-7-1 (p443): 12.7.1 CollapsingToolbarLayout
p12-7-2 (p453): 12.7.2 充分利用系统状态栏空间
p12-8 (p456): 12.8 小结与点评
p13 (p457): 第13章 继续进阶——你还应该掌握的高级技巧
p13-1 (p457): 13.1 全局获取Context的技巧
p13-2 (p461): 13.2 使用Intent传递对象
p13-2-1 (p461): 13.2.1 Serializable方式
p13-2-2 (p463): 13.2.2 Parcelable方式
p13-3 (p464): 13.3 定制自己的日志工具
p13-4 (p466): 13.4 调试Android程序
p13-5 (p469): 13.5 创建定时任务
p13-5-1 (p469): 13.5.1 Alarm机制
p13-5-2 (p471): 13.5.2 Doze模式
p13-6 (p472): 13.6 多窗口模式编程
p13-6-1 (p473): 13.6.1 进入多窗口模式
p13-6-2 (p475): 13.6.2 多窗口模式下的生命周期
p13-6-3 (p479): 13.6.3 禁用多窗口模式
p13-7 (p481): 13.7 Lambda表达式
p13-8 (p485): 13.8 总结
p14 (p486): 第14章 进入实战——开发酷欧天气
p14-1 (p486): 14.1 功能需求及技术可行性分析
p14-2 (p489): 14.2 Git时间——将代码托管到GitHub上
p14-3 (p494): 14.3 创建数据库和表
p14-4 (p499): 14.4 遍历全国省市县数据
p14-5 (p509): 14.5 显示天气信息
p14-5-1 (p509): 14.5.1 定义GSON实体类
p14-5-2 (p514): 14.5.2 编写天气界面
p14-5-3 (p520): 14.5.3 将天气显示到界面上
p14-5-4 (p526): 14.5.4 获取必应每日一图
p14-6 (p532): 14.6 手动更新天气和切换城市
p14-6-1 (p532): 14.6.1 手动更新天气
p14-6-2 (p535): 14.6.2 切换城市
p14-7 (p540): 14.7 后台自动更新天气
p14-8 (p542): 14.8 修改图标和名称
p14-9 (p543): 14.9 你还可以做的事情
p15 (p545): 第15章 最后一步——将应用发布到360应用商店
p15-1 (p545): 15.1 生成正式签名的APK文件
p15-1-1 (p546): 15.1.1 使用Android Studio生成
p15-1-2 (p548): 15.1.2 使用Gradle生成
p15-1-3 (p551): 15.1.3 生成多渠道APK文件
p15-2 (p554): 15.2 申请360开发者账号
p15-3 (p556): 15.3 发布应用程序
p15-4 (p560): 15.4 嵌入广告进行盈利
p15-4-1 (p560): 15.4.1 注册腾讯广告联盟账号
p15-4-2 (p562): 15.4.2 新建媒体和广告位
p15-4-3 (p564): 15.4.3 接入广告SDK
p15-4-4 (p569): 15.4.4 重新发布应用程序
p15-5 (p570): 15.5 结束语
p1-1 (p2): 1.1 了解全貌——Android王国简介
p1-1-1 (p2): 1.1.1 Android系统架构
p1-1-2 (p3): 1.1.2 Android已发布的版本
p1-1-3 (p4): 1.1.3 Android应用开发特色
p1-2 (p5): 1.2 手把手带你搭建开发环境
p1-2-1 (p5): 1.2.1 准备所需要的工具
p1-2-2 (p5): 1.2.2 搭建开发环境
p1-3 (p9): 1.3 创建你的第一个Android项目
p1-3-1 (p9): 1.3.1 创建HelloWorld项目
p1-3-2 (p12): 1.3.2 启动模拟器
p1-3-3 (p15): 1.3.3 运行HelloWorld
p1-3-4 (p16): 1.3.4 分析你的第一个Android程序
p1-3-5 (p22): 1.3.5 详解项目中的资源
p1-3-6 (p23): 1.3.6 详解build.gradle文件
p1-4 (p26): 1.4 前行必备——掌握日志工具的使用
p1-4-1 (p26): 1.4.1 使用Android的日志工具Log
p1-4-2 (p27): 1.4.2 为什么使用Log而不使用System.out
p1-5 (p29): 1.5 小结与点评
p2 (p30): 第2章 先从看得到的入手——探究活动
p2-1 (p30): 2.1 活动是什么
p2-2 (p30): 2.2 活动的基本用法
p2-2-1 (p31): 2.2.1 手动创建活动
p2-2-2 (p32): 2.2.2 创建和加载布局
p2-2-3 (p35): 2.2.3 在AndroidManifest文件中注册
p2-2-4 (p37): 2.2.4 在活动中使用Toast
p2-2-5 (p38): 2.2.5 在活动中使用Menu
p2-2-6 (p40): 2.2.6 销毁一个活动
p2-3 (p41): 2.3 使用Intent在活动之间穿梭
p2-3-1 (p41): 2.3.1 使用显式Intent
p2-3-2 (p44): 2.3.2 使用隐式Intent
p2-3-3 (p46): 2.3.3 更多隐式Intent的用法
p2-3-4 (p50): 2.3.4 向下一个活动传递数据
p2-3-5 (p51): 2.3.5 返回数据给上一个活动
p2-4 (p53): 2.4 活动的生命周期
p2-4-1 (p53): 2.4.1 返回栈
p2-4-2 (p54): 2.4.2 活动状态
p2-4-3 (p55): 2.4.3 活动的生存期
p2-4-4 (p56): 2.4.4 体验活动的生命周期
p2-4-5 (p62): 2.4.5 活动被回收了怎么办
p2-5 (p63): 2.5 活动的启动模式
p2-5-1 (p64): 2.5.1 standard
p2-5-2 (p65): 2.5.2 singleTop
p2-5-3 (p67): 2.5.3 singleTask
p2-5-4 (p68): 2.5.4 singleInstance
p2-6 (p71): 2.6 活动的最佳实践
p2-6-1 (p71): 2.6.1 知晓当前是在哪一个活动
p2-6-2 (p72): 2.6.2 随时随地退出程序
p2-6-3 (p74): 2.6.3 启动活动的最佳写法
p2-7 (p75): 2.7 小结与点评
p3 (p76): 第3章 软件也要拼脸蛋——UI开发的点点滴滴
p3-1 (p76): 3.1 如何编写程序界面
p3-2 (p77): 3.2 常用控件的使用方法
p3-2-1 (p77): 3.2.1 TextView
p3-2-2 (p80): 3.2.2 Button
p3-2-3 (p82): 3.2.3 EditText
p3-2-4 (p86): 3.2.4 ImageView
p3-2-5 (p88): 3.2.5 ProgressBar
p3-2-6 (p91): 3.2.6 AlertDialog
p3-2-7 (p93): 3.2.7 ProgressDialog
p3-3 (p94): 3.3 详解4种基本布局
p3-3-1 (p94): 3.3.1 线性布局
p3-3-2 (p100): 3.3.2 相对布局
p3-3-3 (p103): 3.3.3 帧布局
p3-3-4 (p105): 3.3.4 百分比布局
p3-4 (p108): 3.4 系统控件不够用?创建自定义控件
p3-4-1 (p109): 3.4.1 引入布局
p3-4-2 (p111): 3.4.2 创建自定义控件
p3-5 (p113): 3.5 最常用和最难用的控件——ListView
p3-5-1 (p114): 3.5.1 ListView的简单用法
p3-5-2 (p115): 3.5.2 定制ListView的界面
p3-5-3 (p119): 3.5.3 提升ListView的运行效率
p3-5-4 (p120): 3.5.4 ListView的点击事件
p3-6 (p122): 3.6 更强大的滚动控件——RecyclerView
p3-6-1 (p122): 3.6.1 RecyclerView的基本用法
p3-6-2 (p125): 3.6.2 实现横向滚动和瀑布流布局
p3-6-3 (p130): 3.6.3 RecyclerView的点击事件
p3-7 (p132): 3.7 编写界面的最佳实践
p3-7-1 (p132): 3.7.1 制作Nine-Patch图片
p3-7-2 (p135): 3.7.2 编写精美的聊天界面
p3-8 (p141): 3.8 小结与点评
p4 (p142): 第4章 手机平板要兼顾——探究碎片
p4-1 (p142): 4.1 碎片是什么
p4-2 (p144): 4.2 碎片的使用方式
p4-2-1 (p144): 4.2.1 碎片的简单用法
p4-2-2 (p147): 4.2.2 动态添加碎片
p4-2-3 (p150): 4.2.3 在碎片中模拟返回栈
p4-2-4 (p151): 4.2.4 碎片和活动之间进行通信
p4-3 (p151): 4.3 碎片的生命周期
p4-3-1 (p151): 4.3.1 碎片的状态和回调
p4-3-2 (p153): 4.3.2 体验碎片的生命周期
p4-4 (p156): 4.4 动态加载布局的技巧
p4-4-1 (p156): 4.4.1 使用限定符
p4-4-2 (p159): 4.4.2 使用最小宽度限定符
p4-5 (p160): 4.5 碎片的最佳实践——一个简易版的新闻应用
p4-6 (p169): 4.6 小结与点评
p5 (p170): 第5章 全局大喇叭——详解广播机制
p5-1 (p170): 5.1 广播机制简介
p5-2 (p171): 5.2 接收系统广播
p5-2-1 (p171): 5.2.1 动态注册监听网络变化
p5-2-2 (p174): 5.2.2 静态注册实现开机启动
p5-3 (p177): 5.3 发送自定义广播
p5-3-1 (p177): 5.3.1 发送标准广播
p5-3-2 (p179): 5.3.2 发送有序广播
p5-4 (p183): 5.4 使用本地广播
p5-5 (p185): 5.5 广播的最佳实践——实现强制下线功能
p5-6 (p192): 5.6 Git时间——初识版本控制工具
p5-6-1 (p192): 5.6.1 安装Git
p5-6-2 (p193): 5.6.2 创建代码仓库
p5-6-3 (p195): 5.6.3 提交本地代码
p5-7 (p195): 5.7 小结与点评
p6 (p196): 第6章 数据存储全方案——详解持久化技术
p6-1 (p196): 6.1 持久化技术简介
p6-2 (p197): 6.2 文件存储
p6-2-1 (p197): 6.2.1 将数据存储到文件中
p6-2-2 (p201): 6.2.2 从文件中读取数据
p6-3 (p203): 6.3 SharedPreferences存储
p6-3-1 (p203): 6.3.1 将数据存储到SharedPreferences中
p6-3-2 (p206): 6.3.2 从SharedPreferences中读取数据
p6-3-3 (p208): 6.3.3 实现记住密码功能
p6-4 (p211): 6.4 SQLite数据库存储
p6-4-1 (p211): 6.4.1 创建数据库
p6-4-2 (p216): 6.4.2 升级数据库
p6-4-3 (p219): 6.4.3 添加数据
p6-4-4 (p222): 6.4.4 更新数据
p6-4-5 (p224): 6.4.5 删除数据
p6-4-6 (p225): 6.4.6 查询数据
p6-4-7 (p228): 6.4.7 使用SQL操作数据库
p6-5 (p229): 6.5 使用LitePal操作数据库
p6-5-1 (p229): 6.5.1 LitePal简介
p6-5-2 (p230): 6.5.2 配置LitePal
p6-5-3 (p231): 6.5.3 创建和升级数据库
p6-5-4 (p236): 6.5.4 使用LitePal添加数据
p6-5-5 (p237): 6.5.5 使用LitePal更新数据
p6-5-6 (p240): 6.5.6 使用LitePal删除数据
p6-5-7 (p241): 6.5.7 使用LitePal查询数据
p6-6 (p243): 6.6 小结与点评
p7 (p244): 第7章 跨程序共享数据——探究内容提供器
p7-1 (p244): 7.1 内容提供器简介
p7-2 (p245): 7.2 运行时权限
p7-2-1 (p245): 7.2.1 Android权限机制详解
p7-2-2 (p249): 7.2.2 在程序运行时申请权限
p7-3 (p254): 7.3 访问其他程序中的数据
p7-3-1 (p254): 7.3.1 ContentResolver的基本用法
p7-3-2 (p256): 7.3.2 读取系统联系人
p7-4 (p260): 7.4 创建自己的内容提供器
p7-4-1 (p261): 7.4.1 创建内容提供器的步骤
p7-4-2 (p265): 7.4.2 实现跨程序数据共享
p7-5 (p275): 7.5 Git时间——版本控制工具进阶
p7-5-1 (p275): 7.5.1 忽略文件
p7-5-2 (p276): 7.5.2 查看修改内容
p7-5-3 (p278): 7.5.3 撤销未提交的修改
p7-5-4 (p279): 7.5.4 查看提交记录
p7-6 (p280): 7.6 小结与点评
p8 (p281): 第8章 丰富你的程序——运用手机多媒体
p8-1 (p281): 8.1 将程序运行到手机上
p8-2 (p283): 8.2 使用通知
p8-2-1 (p283): 8.2.1 通知的基本用法
p8-2-2 (p289): 8.2.2 通知的进阶技巧
p8-2-3 (p291): 8.2.3 通知的高级功能
p8-3 (p293): 8.3 调用摄像头和相册
p8-3-1 (p294): 8.3.1 调用摄像头拍照
p8-3-2 (p298): 8.3.2 从相册中选择照片
p8-4 (p303): 8.4 播放多媒体文件
p8-4-1 (p303): 8.4.1 播放音频
p8-4-2 (p307): 8.4.2 播放视频
p8-5 (p311): 8.5 小结与点评
p9 (p312): 第9章 看看精彩的世界——使用网络技术
p9-1 (p312): 9.1 WebView的用法
p9-2 (p314): 9.2 使用HTTP协议访问网络
p9-2-1 (p315): 9.2.1 使用HttpURLConnection
p9-2-2 (p319): 9.2.2 使用OkHttp
p9-3 (p321): 9.3 解析XML格式数据
p9-3-1 (p324): 9.3.1 Pull解析方式
p9-3-2 (p326): 9.3.2 SAX解析方式
p9-4 (p329): 9.4 解析JSON格式数据
p9-4-1 (p330): 9.4.1 使用JSONObjiect
p9-4-2 (p331): 9.4.2 使用GSON
p9-5 (p334): 9.5 网络编程的最佳实践
p9-6 (p338): 9.6 小结与点评
p10 (p339): 第10章 后台默默的劳动者——探究服务
p10-1 (p339): 10.1 服务是什么
p10-2 (p340): 10.2 Android多线程编程
p10-2-1 (p340): 10.2.1 线程的基本用法
p10-2-2 (p341): 10.2.2 在子线程中更新UI
p10-2-3 (p345): 10.2.3 解析异步消息处理机制
p10-2-4 (p347): 10.2.4 使用AsyncTask
p10-3 (p349): 10.3 服务的基本用法
p10-3-1 (p349): 10.3.1 定义一个服务
p10-3-2 (p352): 10.3.2 启动和停止服务
p10-3-3 (p355): 10.3.3 活动和服务进行通信
p10-4 (p359): 10.4 服务的生命周期
p10-5 (p359): 10.5 服务的更多技巧
p10-5-1 (p359): 10.5.1 使用前台服务
p10-5-2 (p361): 10.5.2 使用IntentService
p10-6 (p365): 10.6 服务的最佳实践——完整版的下载示例
p10-7 (p378): 10.7 小结与点评
p11 (p379): 第11章 Android特色开发——基于位置的服务
p11-1 (p379): 11.1 基于位置的服务简介
p11-2 (p380): 11.2 申请API Key
p11-3 (p384): 11.3 使用百度定位
p11-3-1 (p384): 11.3.1 准备LBS SDK
p11-3-2 (p386): 11.3.2 确定自己位置的经纬度
p11-3-3 (p391): 11.3.3 选择定位模式
p11-3-4 (p393): 11.3.4 看得懂的位置信息
p11-4 (p395): 11.4 使用百度地图
p11-4-1 (p395): 11.4.1 让地图显示出来
p11-4-2 (p397): 11.4.2 移动到我的位置
p11-4-3 (p400): 11.4.3 让“我”显示在地图上
p11-5 (p402): 11.5 Git时间——版本控制工具的高级用法
p11-5-1 (p403): 11.5.1 分支的用法
p11-5-2 (p404): 11.5.2 与远程版本库协作
p11-6 (p406): 11.6 小结与点评
p12 (p407): 第12章 最佳的UI体验——MaterialDesign实战
p12-1 (p407): 12.1 什么是Material Design
p12-2 (p408): 12.2 Toolbar
p12-3 (p415): 12.3 滑动菜单
p12-3-1 (p415): 12.3.1 DrawerLayout
p12-3-2 (p418): 12.3.2 NavigationView
p12-4 (p423): 12.4 悬浮按钮和可交互提示
p12-4-1 (p424): 12.4.1 FloatingActionButton
p12-4-2 (p427): 12.4.2 Snackbar
p12-4-3 (p428): 12.4.3 CoordinatorLayout
p12-5 (p430): 12.5 卡片式布局
p12-5-1 (p431): 12.5.1 CardView
p12-5-2 (p437): 12.5.2 AppBarLayout
p12-6 (p440): 12.6 下拉刷新
p12-7 (p443): 12.7 可折叠式标题栏
p12-7-1 (p443): 12.7.1 CollapsingToolbarLayout
p12-7-2 (p453): 12.7.2 充分利用系统状态栏空间
p12-8 (p456): 12.8 小结与点评
p13 (p457): 第13章 继续进阶——你还应该掌握的高级技巧
p13-1 (p457): 13.1 全局获取Context的技巧
p13-2 (p461): 13.2 使用Intent传递对象
p13-2-1 (p461): 13.2.1 Serializable方式
p13-2-2 (p463): 13.2.2 Parcelable方式
p13-3 (p464): 13.3 定制自己的日志工具
p13-4 (p466): 13.4 调试Android程序
p13-5 (p469): 13.5 创建定时任务
p13-5-1 (p469): 13.5.1 Alarm机制
p13-5-2 (p471): 13.5.2 Doze模式
p13-6 (p472): 13.6 多窗口模式编程
p13-6-1 (p473): 13.6.1 进入多窗口模式
p13-6-2 (p475): 13.6.2 多窗口模式下的生命周期
p13-6-3 (p479): 13.6.3 禁用多窗口模式
p13-7 (p481): 13.7 Lambda表达式
p13-8 (p485): 13.8 总结
p14 (p486): 第14章 进入实战——开发酷欧天气
p14-1 (p486): 14.1 功能需求及技术可行性分析
p14-2 (p489): 14.2 Git时间——将代码托管到GitHub上
p14-3 (p494): 14.3 创建数据库和表
p14-4 (p499): 14.4 遍历全国省市县数据
p14-5 (p509): 14.5 显示天气信息
p14-5-1 (p509): 14.5.1 定义GSON实体类
p14-5-2 (p514): 14.5.2 编写天气界面
p14-5-3 (p520): 14.5.3 将天气显示到界面上
p14-5-4 (p526): 14.5.4 获取必应每日一图
p14-6 (p532): 14.6 手动更新天气和切换城市
p14-6-1 (p532): 14.6.1 手动更新天气
p14-6-2 (p535): 14.6.2 切换城市
p14-7 (p540): 14.7 后台自动更新天气
p14-8 (p542): 14.8 修改图标和名称
p14-9 (p543): 14.9 你还可以做的事情
p15 (p545): 第15章 最后一步——将应用发布到360应用商店
p15-1 (p545): 15.1 生成正式签名的APK文件
p15-1-1 (p546): 15.1.1 使用Android Studio生成
p15-1-2 (p548): 15.1.2 使用Gradle生成
p15-1-3 (p551): 15.1.3 生成多渠道APK文件
p15-2 (p554): 15.2 申请360开发者账号
p15-3 (p556): 15.3 发布应用程序
p15-4 (p560): 15.4 嵌入广告进行盈利
p15-4-1 (p560): 15.4.1 注册腾讯广告联盟账号
p15-4-2 (p562): 15.4.2 新建媒体和广告位
p15-4-3 (p564): 15.4.3 接入广告SDK
p15-4-4 (p569): 15.4.4 重新发布应用程序
p15-5 (p570): 15.5 结束语
开源日期
2024-06-28
🚀 快速下载
成为会员以支持书籍、论文等的长期保存。为了感谢您对我们的支持,您将获得高速下载权益。❤️
如果您在本月捐款,您将获得双倍的快速下载次数。
🐢 低速下载
由可信的合作方提供。 更多信息请参见常见问题解答。 (可能需要验证浏览器——无限次下载!)
- 低速服务器(合作方提供) #1 (稍快但需要排队)
- 低速服务器(合作方提供) #2 (稍快但需要排队)
- 低速服务器(合作方提供) #3 (稍快但需要排队)
- 低速服务器(合作方提供) #4 (稍快但需要排队)
- 低速服务器(合作方提供) #5 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #6 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #7 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #8 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #9 (无需排队,但可能非常慢)
- 下载后: 在我们的查看器中打开
所有选项下载的文件都相同,应该可以安全使用。即使这样,从互联网下载文件时始终要小心。例如,确保您的设备更新及时。
外部下载
-
对于大文件,我们建议使用下载管理器以防止中断。
推荐的下载管理器:JDownloader -
您将需要一个电子书或 PDF 阅读器来打开文件,具体取决于文件格式。
推荐的电子书阅读器:Anna的档案在线查看器、ReadEra和Calibre -
使用在线工具进行格式转换。
推荐的转换工具:CloudConvert和PrintFriendly -
您可以将 PDF 和 EPUB 文件发送到您的 Kindle 或 Kobo 电子阅读器。
推荐的工具:亚马逊的“发送到 Kindle”和djazz 的“发送到 Kobo/Kindle” -
支持作者和图书馆
✍️ 如果您喜欢这个并且能够负担得起,请考虑购买原版,或直接支持作者。
📚 如果您当地的图书馆有这本书,请考虑在那里免费借阅。
下面的文字仅以英文继续。
总下载量:
“文件的MD5”是根据文件内容计算出的哈希值,并且基于该内容具有相当的唯一性。我们这里索引的所有影子图书馆都主要使用MD5来标识文件。
一个文件可能会出现在多个影子图书馆中。有关我们编译的各种数据集的信息,请参见数据集页面。
有关此文件的详细信息,请查看其JSON 文件。 Live/debug JSON version. Live/debug page.