《Android编程权威指南》第3版
源自大名鼎鼎的Big Nerd Ranch训练营培训讲义,该训练营已经为微软、Google、Facebook等行业巨头培养了众多专业人才。全面——涵盖Android开发所有bi备理论概念和技术知识点,从Android 4.4到Android 7.0都适用。实用——8个Android应用开发实战项目,传授一线开发经验。易懂——以循序渐进的方式精心编排章节,一步一步写出Android应用。时新——在前两版的基础上,新增数据绑定、MVVM架构、Android辅助功能等内容。 

第1章 Android 开发初体验 1

1.1 Android 开发基础 2

1.2 创建Android 项目 2

1.3 Android Studio 使用导航 6

1.4 用户界面设计 6

1.4.1 视图层级结构 10

1.4.2 组件属性 10

1.4.3 创建字符串资源 11

1.4.4 预览布局 12

1.5 从布局XML 到视图对象 13

1.6 组件的实际应用 16

1.6.1 引用组件 17

1.6.2 设置监听器17

1.7 创建提示消息 19

1.8 使用模拟器运行应用 21

1.9 深入学习:Android 编译过程 23

1.10 关于挑战练习 25

1.11 挑战练习:定制toast 消息 25

第2章 Android 与MVC 设计模式 26

2.1 创建新类 26

2.2 Android 与MVC 设计模式 29

2.3 更新视图层 31

2.4 更新控制器层 33

2.5 在物理设备上运行应用 37

2.5.1 连接设备 37

2.5.2 配置设备用于应用开发 7

2.6 添加图标资源 38

2.6.1 向项目中添加资源 39

2.6.2 在XML 文件中引用资源 41

2.7 挑战练习:为TextView 添加监听器 42

2.8 挑战练习:添加后退按钮 42

2.9 挑战练习:从按钮到图标按钮 42

第3章 activity 的生命周期 45

3.1 日志跟踪理解activity 生命周期 46

3.1.1 输出日志信息 46

3.1.2 使用LogCat 48

3.1.3 activity 生命周期实例解析 50

3.2 设备旋转与activity 生命周期 52

3.3 保存数据以应对设备旋转 56

3.4 再探activity 生命周期 58

3.5 深入学习:activity 内存清理现状 59

3.6 深入学习:日志记录的级别与方法 60

3.7 挑战练习:禁止一题多答 61

3.8 挑战练习:评分 61

第4章 Android 应用的调试 62

4.1 异常与栈跟踪 63

4.1.1 诊断应用异常 64

4.1.2 记录栈跟踪日志 65

4.1.3 设置断点 66

4.1.4 使用异常断点 68

4.2 Android 特有的调试工具 70

4.2.1 使用Android Lint 70

4.2.2 R类的问题 71

4.3 挑战练习:探索布局检查器 72

4.4 挑战练习:探索内存分配跟踪 72

第5章 第二个activity 74

5.1 创建第二个activity 75

5.1.1 创建新的activity 75

5.1.2 创建新的activity子类 78

5.1.3 在manifest配置文件中声明activity 78

5.1.4 为QuizActivity 添加CHEAT按钮 79

5.2 启动activity 81

5.3 activity间的数据传递 83

5.3.1 使用intent extra 83

5.3.2 从子activity获取返回结果 86

5.4 activity 的使用与管理 91

5.5 挑战练习:堵住漏洞 93

第6章 Android SDK版本与兼容 94

6.1 Android SDK版本 94

6.2 Android编程与兼容性问题 95

6.2.1 比较合理的版本 95

6.2.2 SDK最低版本 96

6.2.3 SDK目标版本 97

6.2.4 SDK编译版本 97

6.2.5 安全添加新版本API中的代码 97

6.3 使用Android开发者文档 100

6.4 挑战练习:报告编译版本 101

6.5 挑战练习:限制作弊次数 102

第7章 UI fragment 与fragment管理器 103

7.1 UI设计的灵活性需求 104

7.2 引入fragment 104

7.3 着手开发CriminalIntent 105

7.3.1 创建新项目 107

7.3.2 两类fragment 108

7.3.3 在Android Studio中增加依赖关系 108

7.3.4 创建Crime类 111

7.4 托管UI fragment 112

7.4.1 fragment的生命周期 112

7.4.2 托管的两种方式 113

7.4.3 定义容器视图 113

7.5 创建UI fragment 115

7.5.1 定义CrimeFragment的布局 115

7.5.2 创建CrimeFragment类 117

7.6 向FragmentManager添加UI fragment 122

7.6.1 fragment事务 123

7.6.2 FragmentManager 与fragment生命周期 125

7.7 采用fragment的应用架构 126

7.8 深入学习:fragment与支持库 127

7.9 深入学习:为什么优先使用支持库版fragment 128

第8章 使用RecyclerView显示列表 129

8.1 升级CriminalIntent应用的模型层 130

8.2 使用抽象activity托管fragment 132

8.2.1 通用型fragment托管布局 133

8.2.2 抽象activity类 133

8.3 RecyclerView、ViewHolder 和Adapter 137

8.3.1 ViewHolder和Adapter 138

8.3.2 使用RecyclerView 141

8.3.3 列表项视图 142

8.3.4 实现ViewHolder和Adapter 143

8.4 绑定列表项 145

8.5 响应点击 147

8.6 深入学习:ListView和GridView 148

8.7 深入学习:单例 148

8.8 挑战练习:RecyclerView ViewType 149

第9章 使用布局与组件创建用户界面 150

9.1 使用图形布局工具 151

9.2 引入ConstraintLayout 151

9.2.1 使用ConstraintLayout 152

9.2.2 约束编辑器 153

9.2.3 腾出空间 155

9.2.4 添加组件 157

9.2.5 约束的XML形式 159

9.2.6 编辑属性 160

9.2.7 动态设置列表项 162

9.3 深入学习布局属性 163

9.3.1 dp、sp以及屏幕像素密度 163

9.3.2 边距与内边距 165

9.3.3 样式、主题及主题属性 166

9.3.4 Android应用的设计原则 166

9.4 图形布局工具使用小结 167

9.5 挑战练习:日期格式化 167

第10章 使用fragment argument 168

10.1 从fragment 中启动activity 168

10.1.1 附加extra信息 169

10.1.2 获取extra信息 170

10.1.3 使用Crime数据更新CrimeFragment视图 171

10.1.4 直接获取extra信息的缺点 172

10.2 fragment argument 172

10.2.1 附加argument给fragment 173

10.2.2 获取argument 174

10.3 刷新显示列表项 174

10.4 通过fragment获取返回结果 176

10.5 深入学习:为何要用fragment argument 177

10.6 挑战练习:实现高效的RecyclerView刷新 178

10.7 挑战练习:优化CrimeLab的表现 178

第11章 使用ViewPager 179

11.1 创建CrimePagerActivity 180

11.1.1 ViewPager与PagerAdapter 181

11.1.2 整合并配置使用CrimePagerActivity 182

11.2 FragmentStatePagerAdapter与FragmentPagerAdapter 184

11.3 深入学习:ViewPager的工作原理 186

11.4 深入学习:以代码的方式创建视图 187

11.5 挑战练习:恢复CrimeFragment的边距 187

11.6 挑战练习:添加Jump to First按钮和Jump to Last按钮 188

第12章 对话框 189

12.1 创建DialogFragment 190

12.1.1 显示DialogFragment 192

12.1.2 设置对话框的显示内容 194

12.2 fragment间的数据传递 196

12.2.1 传递数据给DatePickerFragment 197

12.2.2 返回数据给CrimeFragment 199

12.3 挑战练习:更多对话框 205

12.4 挑战练习:实现响应式DialogFragment 205

第13章 工具栏 207

13.1 AppCompat 207

13.2 工具栏菜单 209

13.2.1 在XML文件中定义菜单 210

13.2.2 创建菜单 214

13.2.3 响应菜单项选择 217

13.3 实现层级式导航 218

13.4 可选菜单项 219

13.4.1 切换菜单项标题 220

13.4.2 “还有个问题” 222

13.5 深入学习:工具栏与操作栏 224

13.6 挑战练习:删除crime记录 224

13.7 挑战练习:复数字符串资源 224

13.8 挑战练习:用于RecyclerView的空视图 225

第14章 SQLite数据库 226

14.1 定义schema 226

14.2 创建初始数据库 227

14.2.1 使用Android Device Monitor查看文件 230

14.2.2 处理数据库相关问题 231

14.3 修改CrimeLab类 232

14.4 写入数据库 233

14.4.1 使用ContentValues 233

14.4.2 插入和更新记录 234

14.5 读取数据库 235

14.5.1 使用CursorWrapper 236

14.5.2 创建模型层对象 238

14.6 深入学习:数据库高级主题介绍 241

14.7 深入学习:应用上下文 241

14.8 挑战练习:删除crime记录 242

第15章 隐式intent 243

15.1 添加按钮组件 244

15.2 添加嫌疑人信息至模型层 244

15.3 使用格式化字符串 246

15.4 使用隐式intent 248

15.4.1 隐式intent的组成 248

15.4.2 发送消息 249

15.4.3 获取联系人信息 252

15.4.4 检查可响应任务的activity 254

15.5 挑战练习:ShareCompat 256

15.6 挑战练习:又一个隐式intent 256

第16章 使用intent拍照 258

16.1 布置照片 258

16.2 文件存储 260

16.2.1 使用FileProvider 261

16.2.2 指定照片存放位置 262

16.3 使用相机intent 263

16.4 缩放和显示位图 265

16.5 功能声明 268

16.6 挑战练习:优化照片显示 269

16.7 挑战练习:优化缩略图加载 269

第17章 双版面主从用户界面 270

17.1 增加布局灵活性 271

17.1.1 修改SingleFragmentActivity 272

17.1.2 创建包含两个fragment容器的布局 272

17.1.3 使用别名资源 274

17.1.4 创建平板设备专用可选资源 275

17.2 activity:fragment的托管者 276

17.3 深入学习:设备屏幕尺寸的确定 284

17.4 挑战练习:添加滑动删除功能 285

第18章 应用本地化 286

18.1 资源本地化 286

18.1.1 默认资源 289

18.1.2 检查资源本地化完成情况 291

18.1.3 区域修饰符 292

18.2 配置修饰符 294

18.2.1 可用资源优先级排定 295

18.2.2 多重配置修饰符 296

18.2.3 寻找最匹配的资源 297

18.3 测试备选资源 298

18.4 挑战练习:日期本地化 298

第19章 Android辅助功能 299

19.1 TalkBack 299

19.1.1 点击浏览 301

19.1.2 线性浏览 301

19.2 实现非文字型元素可读 303

19.2.1 添加内容描述 303

19.2.2 实现组件可聚焦 305

19.3 提升辅助体验 305

19.4 深入学习:使用辅助功能扫描器 309

19.5 挑战练习:优化列表项 311

19.6 挑战练习:补全上下文信息 311

19.7 挑战练习:事件主动通知 311

第20章 数据绑定与MVVM 313

20.1 为何要用MVVM 架构 314

20.2 创建BeatBox应用 314

20.3 导入assets 319

20.4 处理assets 321

20.5 使用assets 323

20.6 绑定数据 325

20.6.1 创建视图模型 327

20.6.2 绑定至视图模型 328

20.6.3 绑定数据观察 330

20.7 访问assets 332

20.8 深入学习:数据绑定再探 333

20.8.1 lambda表达式 333

20.8.2 更多语法糖 333

20.8.3 BindingAdapter 333

20.9 深入学习:为何使用assets 334

20.10 深入学习:什么是non-assets 334

第21章 音频播放与单元测试 335

21.1 创建SoundPool 335

21.2 加载音频文件 336

21.3 播放音频 337

21.4 添加测试依赖 338

21.5 创建测试类 339

21.6 实现测试类341

21.7 编写测试方法 342

21.8 数据绑定回调 346

21.9 释放音频 346

21.10 设备旋转和对象保存 347

21.10.1 保留fragment 348

21.10.2 设备旋转和已保留的fragment 349

21.11 深入学习:是否保留fragment 351

21.12 深入学习:Espresso与整合测试 351

21.13 深入学习:虚拟对象与测试 352

21.14 挑战练习:播放进度控制 353

第22章 样式与主题 354

22.1 颜色资源 354

22.2 样式 355

22.3 主题 357

22.4 添加主题颜色 359

22.5 覆盖主题属性 361

22.6 修改按钮属性 364

22.7 深入学习:样式继承拾遗 367

22.8 深入学习:引用主题属性 367

第23章 XML drawable 368

23.1 统一按钮样式 368

23.2 shape drawable 369

23.3 state list drawable 371

23.4 layer list drawable 372

23.5 深入学习:为什么要用XML drawable 373

23.6 深入学习:使用mipmap图像 374

23.7 深入学习:使用9-patch图像 375

23.8 挑战练习:按钮主题 379

第24章 深入学习intent和任务 380

24.1 创建NerdLauncher项目 380

24.2 解析隐式intent 382

24.3 在运行时创建显式intent 386

24.4 任务与回退栈 388

24.4.1 在任务间切换 389

24.4.2 启动新任务 389

24.5 使用NerdLauncher应用作为设备主屏幕 392

24.6 挑战练习:应用图标 393

24.7 深入学习:进程与任务 393

24.8 深入学习:并发文档 395

第25章 HTTP与后台任务 398

25.1 创建PhotoGallery应用 399

25.2 网络连接基本 401

25.3 使用AsyncTask在后台线程上运行代码 403

25.4 线程与主线程 405

25.5 从Flickr获取JSON数据 407

25.6 从AsyncTask回到主线程 413

25.7 清理AsyncTask 416

25.8 深入学习:AsyncTask再探 416

25.9 深入学习:AsyncTask的替代方案 417

25.10 挑战练习:Gson 418

25.11 挑战练习:分页 418

25.12 挑战练习:动态调整网格列 418

第26章 Looper、Handler和HandlerThread 420

26.1 配置RecyclerView以显示图片 420

26.2 批量下载缩略图 422

26.3 与主线程通信 423

26.4 创建并启动后台线程 424

26.5 Message 与message handler 426

26.5.1 剖析Message 426

26.5.2 剖析Handler 427

26.5.3 使用handler 428

26.5.4 传递handler 431

26.6 深入学习:AsyncTask与线程 436

26.7 深入学习:解决图片下载问题 436

26.8 深入学习:StrictMode 437

26.9 挑战练习:预加载以及缓存 438

第27章 搜索 439

27.1 搜索Flickr网站 439

27.2 使用SearchView 443

27.3 使用shared preferences实现轻量级数据存储 447

27.4 优化应用 451

27.5 挑战练习:深度优化PhotoGallery应用 451

第28章 后台服务 452

28.1 创建IntentService 452

28.2 服务的作用 454

28.3 查找最新返回结果 456

28.4 使用AlarmManager延迟运行服务 458

28.4.1 合理控制服务启动的频度 460

28.4.2 PendingIntent 461

28.4.3 使用PendingIntent管理定时器 461

28.5 控制定时器 462

28.6 通知信息 464

28.7 挑战练习:可穿戴设备上的通知 466

28.8 深入学习:服务之细节 467

28.8.1 服务的能与不能 467

28.8.2 服务的生命周期 467

28.8.3 non-sticky服务 467

28.8.4 sticky服务 468

28.8.5 绑定服务 468

28.9 深入学习:JobScheduler 和JobService 469

28.10 挑战练习:在Lollipop设备上使用JobService 472

28.11 深入学习:sync adapter 472

第29章 broadcast intent 474

29.1 普通intent和broadcast intent 474

29.2 接收系统broadcast:重启后唤醒 475

29.2.1 创建并登记standalone receiver 475

29.2.2 使用receiver 477

29.3 过滤前台通知消息 479

29.3.1 发送broadcast intent 479

29.3.2 创建并登记动态receiver 480

29.3.3 使用私有权限限制broadcast 482

29.3.4 使用有序broadcast收发数据 484

29.4 receiver与长时运行任务 488

29.5 深入学习:本地事件 488

29.5.1 使用EventBus 489

29.5.2 使用RxJava 490

29.6 深入学习:探测fragment的状态 490



第30章 网页浏览 492

30.1 最后一段Flickr数据 492

30.2 简单方式:隐式intent 494

30.3 较难方式:使用WebView 496

30.4 处理WebView的设备旋转问题 502

30.5 深入学习:注入JavaScript对象 502

30.6 深入学习:WebView升级 503

30.7 挑战练习:使用后退键浏览历史网页 504

30.8 挑战练习:非HTTP链接支持 504

第31章 定制视图与触摸事件 505

31.1 创建DragAndDraw项目 505

31.2 创建定制视图 507

31.3 处理触摸事件 509

31.4 onDraw(...)方法内的图形绘制 513

31.5 挑战练习:设备旋转问题 515

31.6 挑战练习:旋转矩形框 515

第32章 属性动画 516

32.1 建立场景 516

32.2 简单属性动画 519

32.2.1 视图属性转换 521

32.2.2 使用不同的interpolator 523

32.2.3 色彩渐变 523

32.3 播放多个动画 525

32.4 深入学习:其他动画API 527

32.4.1 传统动画工具 527

32.4.2 转场 527

32.5 挑战练习 527

第33章 地理位置和Play服务 528

33.1 地理位置和定位类库 528

33.2 创建Locatr项目 529

33.3 Play服务定位和模拟器 530

33.4 创建Locatr应用 532

33.5 配置Google Play服务 534

33.6 使用Google Play服务 536

33.7 基于地理位置的Flickr搜索 538

33.8 获取定位数据 539

33.9 获取运行时权限 542

33.10 寻找并显示图片 546

33.11 挑战练习:权限使用理由 548

33.12 挑战练习:进度指示器 549

第34章 使用地图 550

34.1 导入Play地图服务库 550

34.2 Android上的地图服务 550

34.3 获取Maps API key 550

34.4 创建地图 552

34.5 获取更多地理位置数据 553

34.6 使用地图 556

34.7 深入学习:团队开发和API key 560

第35章 material design 562

35.1 material surface 562

35.1.1 elevation和Z值 564

35.1.2 state list animator 565

35.2 动画工具 566

35.2.1 circular reveal 567

35.2.2 shared element transition 568

35.3 新的视图组件 571

35.3.1 card 571

35.3.2 floating action button 572

35.3.3 snackbar 573

35.4 深入学习material design 574

第36章 编后语 575

36.1 终极挑战 575

36.2 关于我们 575

36.3 致谢 576

文件大小:71.8MB
内附PC端和移动端阅读器
《Android编程权威指南》第3版 介绍图片
JavaScript快速全栈开发 高清电子书PDF版本

JavaScript快速全栈开发 高清电子书PDF版本

¥3.00
全网最全训狗视频教程 人人成为训狗高手

全网最全训狗视频教程 人人成为训狗高手

¥8.00
《Bootstrap实战》经典web前端响应式开发教程

《Bootstrap实战》经典web前端响应式开发教程

¥8.00
JavaScript高效图形编程修订版 JavaScript的面向对象机制 JavaScript性能优化

JavaScript高效图形编程修订版 JavaScript的面向对象机制 JavaScript性能优化

¥3.00
JavaScript捷径教程

JavaScript捷径教程

¥3.00
《HTML5游戏开发》[美]JeanineMeyer著 人民邮电出版社

《HTML5游戏开发》[美]JeanineMeyer著 人民邮电出版社

¥3.00
《Wrox红皮书Visual C++ 2005入门经典》 霍顿,李颂华,康会光,清华大学出版社

《Wrox红皮书Visual C++ 2005入门经典》 霍顿,李颂华,康会光,清华大学出版社

¥3.00
JavaScript权威指南 第六6版 javascript高级程序设计 中英双版本含源代码

JavaScript权威指南 第六6版 javascript高级程序设计 中英双版本含源代码

¥3.00
《道家内丹修炼秘笈》玉昆子华夏出版社

《道家内丹修炼秘笈》玉昆子华夏出版社

¥3.00
《Dojo权威指南》拉塞尔 ,李松峰 ,机械工业出版社

《Dojo权威指南》拉塞尔 ,李松峰 ,机械工业出版社

¥3.00
《HTML5与CSS3设计模式》350个即时可用的模式 结合了HTML5与CSS3的内容和技巧

《HTML5与CSS3设计模式》350个即时可用的模式 结合了HTML5与CSS3的内容和技巧

¥3.00
无师自通轮滑视频教程 从入门到精通

无师自通轮滑视频教程 从入门到精通

¥3.00
《Android基础教程》第4版

《Android基础教程》第4版

¥3.00
《Python网络数据采集》 人民邮电出版社

《Python网络数据采集》 人民邮电出版社

¥3.00
《Ajax与PHP Web开发》 达里 人民邮电出版社

《Ajax与PHP Web开发》 达里 人民邮电出版社

¥3.00
疯狂Ajax讲义—Prototype+jQuery+DWR+Spring+Hibernate整合开发

疯狂Ajax讲义—Prototype+jQuery+DWR+Spring+Hibernate整合开发

¥3.00
算法帝国 算法导论指导指南 体会数据结构完整体现带来的诠释

算法帝国 算法导论指导指南 体会数据结构完整体现带来的诠释

¥3.00
《Ajax安全技术》防范AJAX安全漏洞的实用指南

《Ajax安全技术》防范AJAX安全漏洞的实用指南

¥3.00
图解CSS3核心技术与案例实战

图解CSS3核心技术与案例实战

¥3.00
adobe After Effects 视频自学教程 短视频必备技术

adobe After Effects 视频自学教程 短视频必备技术

¥5.00
活动策划方案 7000套47个行业 商务必备 内有详细目录 手工整理

活动策划方案 7000套47个行业 商务必备 内有详细目录 手工整理

¥9.00
销售成交话术谈判签单技巧营业人员导购资料客服手册营销

销售成交话术谈判签单技巧营业人员导购资料客服手册营销

¥3.00
2020年最新vue.js视频自学教程

2020年最新vue.js视频自学教程

¥18.00
《JavaScript设计模式》JavaScript原生经典教程

《JavaScript设计模式》JavaScript原生经典教程

¥3.00
洪恩从零开始学日语 最实用的日语学习软件

洪恩从零开始学日语 最实用的日语学习软件

¥8.00
JavaScript DOM编程艺术第二2版 豆瓣粉丝众多 广受好评

JavaScript DOM编程艺术第二2版 豆瓣粉丝众多 广受好评

¥5.00
JavaScript王者归来 含光盘 最好的JS学习教程电子版

JavaScript王者归来 含光盘 最好的JS学习教程电子版

¥3.00
JavaScript基础教程.第9版

JavaScript基础教程.第9版

¥3.00
《JavaScript语言精粹》

《JavaScript语言精粹》

¥3.00
《SQL基础教程》+《SQL进阶教程》 SQL应用技能指南 数据库工程师进阶中级教程

《SQL基础教程》+《SQL进阶教程》 SQL应用技能指南 数据库工程师进阶中级教程

¥3.00
Vue.js开发实战视频教程 含课件和源码

Vue.js开发实战视频教程 含课件和源码

¥8.00
编程红宝书《JavaScript完全自学手册》珍藏版

编程红宝书《JavaScript完全自学手册》珍藏版

¥3.00
PYTHON编程:从入门到实践 核心技术网络爬虫书籍数据分析实战教程教材

PYTHON编程:从入门到实践 核心技术网络爬虫书籍数据分析实战教程教材

¥3.00
写给大家看的CSS书(第2版)

写给大家看的CSS书(第2版)

¥3.00
黑客攻防技术宝典 浏览器实战篇+iOS实战篇+web实战篇+反病毒篇四册全

黑客攻防技术宝典 浏览器实战篇+iOS实战篇+web实战篇+反病毒篇四册全

¥5.00
深入浅出javascript-head first javascript 中文版

深入浅出javascript-head first javascript 中文版

¥3.00
960份实用合同书 覆盖全行业 办公室商务人事必备

960份实用合同书 覆盖全行业 办公室商务人事必备

¥8.00
软件开发课堂 JavaScript基础与案例开发详解

软件开发课堂 JavaScript基础与案例开发详解

¥3.00
最全面买车视频攻略教程 买车不在踩坑 买车防骗

最全面买车视频攻略教程 买车不在踩坑 买车防骗

¥5.00
高效团队开发:工具与方法

高效团队开发:工具与方法

¥3.00
零基础速成广东话粤语口语学习视频音频教程

零基础速成广东话粤语口语学习视频音频教程

¥5.00
《编写高质量代码-改善JavaScript程序的188个建议》成林 机械工业出版社

《编写高质量代码-改善JavaScript程序的188个建议》成林 机械工业出版社

¥3.00
《精通Visual C++数字图像处理典型算法及实现》(第2版) 经典教程

《精通Visual C++数字图像处理典型算法及实现》(第2版) 经典教程

¥3.00
《黑客攻防技术宝典:系统实战篇》

《黑客攻防技术宝典:系统实战篇》

¥3.00
JavaScript DOM编程艺术 高清PDF电子书

JavaScript DOM编程艺术 高清PDF电子书

¥3.00
《HTML5与CSS3基础教程》(第8版)累计销售100万册

《HTML5与CSS3基础教程》(第8版)累计销售100万册

¥3.00
大卫-豪比逐层布光人像摄影课程国外英语中文字幕视频教程

大卫-豪比逐层布光人像摄影课程国外英语中文字幕视频教程

¥2.00
JavaScript实例教程 高清PDF电子教程

JavaScript实例教程 高清PDF电子教程

¥3.00
¥3.00
立即下载加入收藏