精品下载站:打造最安全最新的免费软件下载站! 全站导航最近更新

首页编程开发源码相关 → 第一行代码Android第3版课件思维导图源码免费版 整合版

第一行代码Android第3版课件思维导图源码免费版整合版

  • 语言:中文
  • 时间:2020-12-22 18:17
  • 大小:78.5M
  • 官网:暂无
  • 星级:
  • 环境:WinAll
  • 厂商:

软件介绍 软件截图 相关下载 相关文章 点击评论

精品下载精心为您推荐: 第一行代码

编辑点评:基于Android 10.0开发的配套资源下载

2020年刚上新的第一行代码Android第3版电子书的所有配套资源免费分享给大家,包含了第一行代码Android第3版所有课件,源码和思维导图,基于Android 10.0开发从入门到精通,Android+Kotlin语言一本通,畅销书全新升级,CSDN人气博主郭霖力作。

第一行代码Android第3版课件思维导图源码免费版

第一行代码Android第3版课件图片预览

章节介绍

第1章开始启程,你的第一行Android代码.pptx

第2章探究新语言,快速入门Kotlin编程.pptx

第3章先从看得到的入手,探究Activity.pptx

第4章软件也要拼脸蛋,UI开发的点点滴滴.pptx

第5章手机平板要兼顾,探究Fragment.pptx

第6章全局大喇叭,详解广播机制.pptx

第7章数据存储全方案,详解持久化技术.pptx

第8章跨程序共享数据,探究ContentProvider.pptx

第9章丰富你的程序,运用手机多媒体.pptx

第10章后台默默的劳动者,探究Service.pptx

第11章看看精彩的世界,使用网络技术.pptx

第12章最佳的U体验,Material Design实战.pptx

第13章高级程序开发组件,探究Jetpack.pptx

第14章继续进阶,你还应该掌握的高级技巧5.pptx

目录介绍

目  录

第 1章 开始启程——你的第 一行

Android代码 1

1.1 了解全貌,Android王国简介 2

1.1.1 Android系统架构 2

1.1.2 Android已发布的版本 3

1.1.3 Android应用开发特色 4

1.2 手把手带你搭建开发环境 5

1.2.1 准备所需要的工具 5

1.2.2 搭建开发环境 5

1.3 创建你的第 一个Android项目 9

1.3.1 创建HelloWorld项目 9

1.3.2 启动模拟器 11

1.3.3 运行HelloWorld 14

1.3.4 分析你的第 一个Android程序 15

1.3.5 详解项目中的资源 20

1.3.6 详解build.gradle文件 22

1.4 前行必备:掌握日志工具的使用 25

1.4.1 使用Android的日志工具Log 25

1.4.2 为什么使用Log而不使用println() 26

1.5 小结与点评 28

第 2章 探究新语言,快速入门Kotlin

编程 30

2.1 Kotlin语言简介 31

2.2 如何运行Kotlin代码 32

2.3 编程之本:变量和函数 35

2.3.1 变量 35

2.3.2 函数 37

2.4 程序的逻辑控制 41

2.4.1 if条件语句 41

2.4.2 when条件语句 42

2.4.3 循环语句 45

2.5 面向对象编程 48

2.5.1 类与对象 49

2.5.2 继承与构造函数 50

2.5.3 接口 55

2.5.4 数据类与单例类 58

2.6 Lambda编程 61

2.6.1 集合的创建与遍历 61

2.6.2 集合的函数式API 65

2.6.3 Java函数式API的使用 69

2.7 空指针检查 71

2.7.1 可空类型系统 72

2.7.2 判空辅助工具 73

2.8 Kotlin中的小魔术 77

2.8.1 字符串内嵌表达式 77

2.8.2 函数的参数默认值 78

2.9 小结与点评 81

第3章 先从看得到的入手,探究

Activity 82

3.1 Activity是什么 82

3.2 Activity的基本用法 82

3.2.1 手动创建Activity 83

3.2.2 创建和加载布局 85

3.2.3 在AndroidManifest文件中

注册 88

3.2.4 在Activity中使用Toast 90

3.2.5 在Activity中使用Menu 92

3.2.6 销毁一个Activity 96

3.3 使用Intent在Activity之间穿梭 96

3.3.1 使用显式Intent 96

3.3.2 使用隐式Intent 99

3.3.3 更多隐式Intent的用法 101

3.3.4 向下一个Activity传递数据 105

3.3.5 返回数据给上一个Activity 106

3.4 Activity的生命周期 108

3.4.1 返回栈 108

3.4.2 Activity状态 109

3.4.3 Activity的生存期 110

3.4.4 体验Activity的生命周期 111

3.4.5 Activity被回收了怎么办 117

3.5 Activity的启动模式 118

3.5.1 standard 119

3.5.2 singleTop 120

3.5.3 singleTask 122

3.5.4 singleInstance 123

3.6 Activity的最佳实践 126

3.6.1 知晓当前是在哪一个Activity 126

3.6.2 随时随地退出程序 127

3.6.3 启动Activity的最佳写法 129

3.7 Kotlin课堂:标准函数和静态方法 130

3.7.1 标准函数with、run和apply 130

3.7.2 定义静态方法 133

3.8 小结与点评 137

第4章 软件也要拼脸蛋,UI开发的

点点滴滴 138

4.1 该如何编写程序界面 138

4.2 常用控件的使用方法 139

4.2.1 TextView 139

4.2.2 Button 142

4.2.3 EditText 144

4.2.4 ImageView 149

4.2.5 ProgressBar 151

4.2.6 AlertDialog 154

4.3 详解3种基本布局 156

4.3.1 LinearLayout 156

4.3.2 RelativeLayout 163

4.3.3 FrameLayout 166

4.4 系统控件不够用?创建自定义控件 169

4.4.1 引入布局 169

4.4.2 创建自定义控件 172

4.5 最常用和最难用的控件:ListView 174

4.5.1 ListView的简单用法 174

4.5.2 定制ListView的界面 176

4.5.3 提升ListView的运行效率 179

4.5.4 ListView的点击事件 180

4.6 更强大的滚动控件:RecyclerView 182

4.6.1 RecyclerView的基本用法 183

4.6.2 实现横向滚动和瀑布流布局 186

4.6.3 RecyclerView的点击事件 191

4.7 编写界面的最佳实践 193

4.7.1 制作9-Patch图片 193

4.7.2 编写精美的聊天界面 196

4.8 Kotlin课堂:延迟初始化和密封类 201

4.8.1 对变量延迟初始化 201

4.8.2 使用密封类优化代码 204

4.9 小结与点评 206

第5章 手机平板要兼顾,探究

Fragment 207

5.1 Fragment是什么 207

5.2 Fragment的使用方式 209

5.2.1 Fragment的简单用法 210

5.2.2 动态添加Fragment 212

5.2.3 在Fragment中实现返回栈 215

5.2.4 Fragment和Activity之间的

交互 216

5.3 Fragment的生命周期 217

5.3.1 Fragment的状态和回调 217

5.3.2 体验Fragment的生命周期 219

5.4 动态加载布局的技巧 221

5.4.1 使用限定符 221

5.4.2 使用最小宽度限定符 224

5.5 Fragment的最佳实践:一个简易

版的新闻应用 225

5.6 Kotlin课堂:扩展函数和运算符

重载 234

5.6.1 大有用途的扩展函数 234

5.6.2 有趣的运算符重载 236

5.7 小结与点评 240

第6章 全局大喇叭,详解广播机制 242

6.1 广播机制简介 242

6.2 接收系统广播 243

6.2.1 动态注册监听时间变化 243

6.2.2 静态注册实现开机启动 245

6.3 发送自定义广播 249

6.3.1 发送标准广播 249

6.3.2 发送有序广播 252

6.4 广播的最佳实践:实现强制下线功能 255

6.5 Kotlin课堂:高阶函数详解 261

6.5.1 定义高阶函数 261

6.5.2 内联函数的作用 265

6.5.3 noinline与crossinline 268

6.6 Git时间:初识版本控制工具 271

6.6.1 安装Git 271

6.6.2 创建代码仓库 272

6.6.3 提交本地代码 274

6.7 小结与点评 274

第7章 数据存储全方案,详解

持久化技术 275

7.1 持久化技术简介 275

7.2 文件存储 276

7.2.1 将数据存储到文件中 276

7.2.2 从文件中读取数据 279

7.3 SharedPreferences存储 281

7.3.1 将数据存储到SharedPre-

ferences中 282

7.3.2 从SharedPreferences中读取

数据 284

7.3.3 实现记住密码功能 285

7.4 SQLite数据库存储 288

7.4.1 创建数据库 289

7.4.2 升级数据库 295

7.4.3 添加数据 297

7.4.4 更新数据 300

7.4.5 删除数据 302

7.4.6 查询数据 304

7.4.7 使用SQL操作数据库 307

7.5 SQLite数据库的最佳实践 307

7.5.1 使用事务 308

7.5.2 升级数据库的最佳写法 309

7.6 Kotlin课堂:高阶函数的应用 312

7.6.1 简化SharedPreferences的用法 312

7.6.2 简化ContentValues的用法 314

7.7 小结与点评 317

第8章 跨程序共享数据,探究ContentProvider 318

8.1 ContentProvider简介 318

8.2 运行时权限 319

8.2.1 Android权限机制详解 319

8.2.2 在程序运行时申请权限 322

8.3 访问其他程序中的数据 326

8.3.1 ContentResolver的基本用法 326

8.3.2 读取系统联系人 329

8.4 创建自己的ContentProvider 332

8.4.1 创建ContentProvider的步骤 332

8.4.2 实现跨程序数据共享 336

8.5 Kotlin课堂:泛型和委托 345

8.5.1 泛型的基本用法 345

8.5.2 类委托和委托属性 347

8.5.3 实现一个自己的lazy函数 350

8.6 小结与点评 352

第9章 丰富你的程序,运用手机

多媒体 353

9.1 将程序运行到手机上 353

9.2 使用通知 355

9.2.1 创建通知渠道 355

9.2.2 通知的基本用法 357

9.2.3 通知的进阶技巧 362

9.3 调用摄像头和相册 367

9.3.1 调用摄像头拍照 367

9.3.2 从相册中选择图片 371

9.4 播放多媒体文件 374

9.4.1 播放音频 374

9.4.2 播放视频 377

9.5 Kotlin课堂:使用infix函数构建

更可读的语法 381

9.6 Git时间:版本控制工具进阶 383

9.6.1 忽略文件 384

9.6.2 查看修改内容 385

9.6.3 撤销未提交的修改 387

9.6.4 查看提交记录 388

9.7 小结与点评 389

第 10章 后台默默的劳动者,探究

Service 390

10.1 Service是什么 390

10.2 Android多线程编程 391

10.2.1 线程的基本用法 391

10.2.2 在子线程中更新UI 392

10.2.3 解析异步消息处理机制 395

10.2.4 使用AsyncTask 396

10.3 Service的基本用法 399

10.3.1 定义一个Service 399

10.3.2 启动和停止Service 401

10.3.3 Activity和Service进行

通信 404

10.4 Service的生命周期 408

10.5 Service的更多技巧 408

10.5.1 使用前台Service 409

10.5.2 使用IntentService 411

10.6 Kotlin课堂:泛型的高级特性 415

10.6.1 对泛型进行实化 415

10.6.2 泛型实化的应用 417

10.6.3 泛型的协变 418

10.6.3 泛型的逆变 422

10.7 小结与点评 425

第 11章 看看精彩的世界,使用网络

技术 427

11.1 WebView的用法 427

11.2 使用HTTP访问网络 429

11.2.1 使用HttpURLConnection 430

11.2.2 使用OkHttp 433

11.3 解析XML格式数据 436

11.3.1 Pull解析方式 438

11.3.2 SAX解析方式 441

11.4 解析JSON格式数据 444

11.4.1 使用JSONObject 445

11.4.2 使用GSON 446

11.5 网络请求回调的实现方式 448

11.6 最好用的网络库:Retrofit 451

11.6.1 Retrofit的基本用法 452

11.6.2 处理复杂的接口地址类型 456

11.6.3 Retrofit构建器的最佳写法 459

11.7 Kotlin课堂:使用协程编写高效的

并发程序 461

11.7.1 协程的基本用法 461

11.7.2 更多的作用域构建器 467

11.7.3 使用协程简化回调的写法 471

11.8 小结与点评 474

第 12章 最佳的UI体验,Material

Design实战 475

12.1 什么是Material Design 475

12.2 Toolbar 476

12.3 滑动菜单 483

12.3.1 DrawerLayout 483

12.3.2 NavigationView 486

12.4 悬浮按钮和可交互提示 491

12.4.1 FloatingActionButton 491

12.4.2 Snackbar 494

12.4.3 CoordinatorLayout 496

12.5 卡片式布局 498

12.5.1 MaterialCardView 498

12.5.2 AppBarLayout 504

12.6 下拉刷新 507

12.7 可折叠式标题栏 510

12.7.1 CollapsingToolbarLayout 510

12.7.2 充分利用系统状态栏空间 519

12.8 Kotlin课堂:编写好用的工具方法 522

12.8.1 求N个数的最大最小值 522

12.8.2 简化Toast的用法 524

12.8.3 简化Snackbar的用法 526

12.9 Git时间:版本控制工具的高级

用法 528

12.9.1 分支的用法 528

12.9.2 与远程版本库协作 530

12.10 小结与点评 532

第 13章 高级程序开发组件,探究

Jetpack 533

13.1 Jetpack简介 533

13.2 ViewModel 534

13.2.1 ViewModel的基本用法 536

13.2.2 向ViewModel传递参数 539

13.3 Lifecycles 541

13.4 LiveData 545

13.4.1 LiveData的基本用法 545

13.4.2 map和switchMap 549

13.5 Room 554

13.5.1 使用Room进行増删改查 555

13.5.2 Room的数据库升级 562

13.6 WorkManager 565

13.6.1 WorkManager的基本用法 566

13.6.2 使用WorkManager处理

复杂的任务 568

13.7 Kotlin课堂:使用DSL构建专有的

语法结构 571

13.8 小结与点评 577

第 14章 继续进阶,你还应该掌握的

高级技巧 579

14.1 全局获取Context的技巧 579

14.2 使用Intent传递对象 582

14.2.1 Serializable方式 582

14.2.2 Parcelable方式 583

14.3 定制自己的日志工具 584

14.4 调试Android程序 586

14.5 深色主题 589

14.6 Kotlin课堂:Java与Kotlin代码

之间的转换 596

14.7 总结 600

第 15章 进入实战,开发一个天气

预报App 601

15.1 功能需求及技术可行性分析 601

15.2 Git时间:将代码托管到GitHub上 605

15.3 搭建MVVM项目架构 612

15.4 搜索全球城市数据 615

15.4.1 实现逻辑层代码 615

15.4.2 实现UI层代码 620

15.5 显示天气信息 626

15.5.1 实现逻辑层代码 626

15.5.2 实现UI层代码 631

15.5.3 记录选中的城市 645

15.6 手动刷新天气和切换城市 647

15.6.1 手动刷新天气 648

15.6.2 切换城市 650

15.7 制作App的图标 654

15.8 生成正式签名的APK文件 659

15.8.1 使用Android Studio生成 660

15.8.2 使用Gradle生成 663

15.9 你还可以做的事情 666

第 16章 编写并发布一个开源库,PermissionX 669

16.1 开发前的准备工作 669

16.2 实现PermissionX开源库 673

16.3 对开源库进行测试 678

16.4 将开源库发布到jcenter仓库 681

16.5 体验我们的成果 688

16.6 结束语 691

第一行代码第3版新内容介绍

我相信一定会有很多读者朋友都想问一个问题:《第一行代码 第3版》相比于《第一行代码 第2版》具体有哪些变化呢?在这里我就向大家详细地介绍一下主要的变化部分。

首先是编程语言上的改变,本书前两版都是使用Java作为应用程序的编程语言,而第3版使用了Kotlin,这也是目前Google最推荐我们使用的编程语言。

本书的前两版中也没有涉及过语言方面的讲解,默认读者是有Java语言基础的。而第3版中对Kotlin语言进行了非常全面的讲解,不需要读者有任何Kotlin语言的基础。

另外你需要知道,《第一行代码 第3版》是一本升级版的书,而不是一本全新的书,因此书中整体的知识架构仍然和《第一行代码 第2版》是保持一致的。

虽然整体知识架构不变,但还是涉及了一些章节上的变动。

第3版中移除了之前第2版中的11、15两章内容。这两章内容分别讲解的是LBS开发、以及App上架。

LBS开发其实主要讲解的都是百度地图SDK的用法,但是百度地图SDK很可能会频繁更新,而书中的内容却是不能随意改变的,所以我认为这部分内容更应该去百度地图的开发者官网进行学习。

至于App上架主要讲解的是360应用商店的上架过程,由于现在国内的App上架已经变得非常复杂,个人开发者都需要专门去申请软件著作权才能将自己开发的App上架到应用商店,书中的内容已经不再适用,所以也进行了移除。

而第3版中新增了三章内容,分别是第2章、第13章和第16章。

第2章就是之前提到的Kotlin快速入门章节,这一章将会带你迅速上手Kotlin编程,讲解了如变量、函数、逻辑控制、面向对象编程、Lambda编程、空指针检查等Kotlin中最基础、同时也是最核心的知识点。学完了这一章内容之后,你就可以使用Kotlin来编写一些Android程序了。

第13章是专门讲解Jetpack的一个章节。Jetpack是Google于近年推出的一个开发组件工具集,旨在帮助我们编写出更加符合高质量代码规范、更加具有架构设计的应用程序。是的,现在我们已经不能停留在实现功能就万事大吉的层面了,而是要在实现功能的同时,追求更高的代码质量和架构设计。第13章中讲解了ViewModel、Lifecycles、LiveData、Room、WorkManager等内容,基本涵盖了Jetpack架构模块当中最主要的一些组件。

第16章是第3版中新补充的一个实战章节。本书的前两版中都只有一个实战章节,而第3版中会有两个实战章节。不同于过去的App开发实战,第16章会带你一起编写并发布一个开源库。因为我之前也写过几个比较知名的开源项目,并且我在公司的主要工作就是SDK方面的研发,所以其实我很擅长写这部分内容。还有什么事情是比在别人的项目中看到引用了自己的开源库更让人激动的呢?

介绍完了整体章节上的变动,我们再来看一些具体内容上的变化。

为了响应Google的Kotlin First号召,第3版中将全书所有的代码都改成了使用Kotlin语言来进行实现,Android的持续Kotlin化也是未来长期发展的必然趋势。不过,由于新增的第2章只是讲解了一些Kotlin的基础内容,为了能够让你更加全面地掌握Kotlin方方面面的知识,第3版几乎在每一章的最后都加入了一个Kotlin课堂的环节。全书一共有12节Kotlin课堂,全面涵盖了诸如常用技巧、高阶函数、泛型、协程、DSL等等语言层面的知识,绝对足以让你熟练掌握Kotlin这门语言了。

除了在编程语言方面存在大量的变动之外,Android开发方面当然也不会一成不变。自《第一行代码 第2版》出版之后,Android又经历了8 9 10系统的快速迭代。每个新系统版本中都会增加一些崭新的特性,也都需要进行一些开发方面的适配,第3版将这些内容全部涵盖了进去。

另外,近些年来追求架构设计的开发者越来越多,类似MVP、MVVM等架构的使用也越来越广泛,传统的MVC架构逐渐在被抛弃。第3版的第15章中对MVVM架构进行了非常详细的讲解,并且配合着Google提供的Jetpack组件,最终完成了一个MVVM架构的天气预报程序。虽然这个天气预报程序我已经写了3版了,但是这次将会是最具架构性,也最符合高质量编码规范的版本。相信会对你未来开发公司的实际项目带来很大的帮助。

除了上述主要变化之外,还有许多小细节方面的变动这里就不一一列举了,等待你自己阅读的时候发现吧。

作者的话

不得不说,《第一行代码 第3版》这本书,在出版的过程中经历了太多坎坷,以至于到今天才能跟大家见面。这里先跟所有的读者朋友们说声:对不起,让你们久等了!

早在2017年,Google在I/O大会上宣布Kotlin将成为Android系统的一级开发语言,从此与Java平起平坐。那时我就猜想到,在Android应用层的开发语言将掀起一场大淘汰式的替换。当时图灵出版社也看到了这个新闻,图灵的编辑很快就联系我,问我准不准备写一本Kotlin方面的书?

我认为掌握一门语言是需要时间沉淀的,学语法可能两周就能搞定,但要想体会到精髓,则需要不断通过写代码去磨练和提升。那个时候我不认为我具有写好这样一本书的能力,所以也就没有答应。

长期关注我的朋友应该知道,在这之后的一年多时间里,我把时间基本都放在了GifFun这个开源项目上面。这个项目一开始是使用Java来写的,中途被我切换成了Kotlin。因为我知道,要想熟练掌握一门语言,最好的方式就是不断用它来写代码。我也就借此机会,对Kotlin有了更加深刻的理解。

到了2019年,我和出版社又重新进行了商讨,准备对《第一行代码》再度更新,推出第3版,这次会将全书的代码都改用Kotlin来实现。但问题在于,Kotlin作为一门新兴语言,程序员基数远不可能有Java那样庞大。如果换了语言之后导致大量读者看不懂怎么办?

当时出版社提出了一个方案,让我单独再写一本专门讲解Kotlin语言的书,和《第一行代码》配套使用。不过我认为这个方案会提升《第一行代码 第3版》的阅读门槛,就没有答应。

几经思考之后,我认为想出了一个最佳的写作方案:在一本书里面同时讲解Android和Kotlin这两门技术。这也将会是《第一行代码》中首次引入编程语言的讲解。

但如何安排这两门技术之间的内容顺序是一件非常有挑战的事情。因为Kotlin是Android程序的开发语言,很显然需要先掌握语言才能开发Android程序。可是如果先花小半本书的篇幅讲解Kotlin,然后再开始学习Android开发,这种学习方式一定非常枯燥,因为学编程语言最怕的就是光学不练。

为此,我决定采用一种或许别人从未尝试过的方式,将Kotlin和Android穿插在一起讲解。首先使用一个快速入门章节介绍Kotlin的基础知识,然后利用已掌握的知识开始学习Android开发,这样可以做到立刻上手实践。之后的每一章当中,都会结合相当章节的Android内容再学习一些Kotlin的进阶知识,等学完整本书之后,你就能同时熟练地掌握Android和Kotlin这两门技术了。

这种穿插讲解的方式非常考验我的内容设计能力,因为每章的Android开发中用到的Kotlin知识不能过于超前,不然读者会出现看不懂的情况。同时每章讲解的Kotlin知识又要结合着相应章节的Android知识,这样才能更好地理解该知识点的用法与场景。它们之间的内容是相辅相成的。

为此,在前期制订目录上面我就花了将近一个月的时间,之后编写Kotlin快速入门这一章又花了两个多月的时间。因为我以前从来没有写过编程语言类的书,为了把Kotlin重要的基础知识在这一章里面都体现出来,我花费了很多心思。在编写这一章的过程中,Google I/O 2019大会上正式宣布了Kotlin First的口号,Kotlin已经不再和Java是平起平坐,而是变成一等公民了。虽然这是我意料之中的事情,但是比我预期来得要早,也让我更加坚定了写好这本书的信心。

《第一行代码 第2版》是2016年3月份开始动笔的,同年9月份完稿,12月份出版。《第一行代码 第3版》是2019年3月份开始动笔的,但是9月份却远远无法完稿,因为改动内容和新增内容要远比第2版时大得多。我几乎把所有的业余时间都放在了上面,最终在11月底才勉强全书完稿。

本来是想着好事多磨,好书也不怕晚出版几个月,过完年应该就可以跟大家见面了。没想到,我们恰好碰上了一场从未遇到过的疫情灾难,包括17年前的SARS也没有今天的新冠疫情严重。

这场疫情导致中国各方面都受到了极大的创伤,学校停课,企业停工,大家都只能呆在家里,不出门就是最安全的。而受疫情的影响,出版社、印刷厂都延迟上班,无法复工。我每天在公众号中都会被读者追问,新书到底什么时候可以出版?这个问题我当时真的无法回答,疫情所带来的影响要持续到何时真的没人知道。

后来到了三月份,国内的疫情已经逐渐控制住,多数企业也在慢慢复工复产了,这本书才终于能够得以出版印刷。但是,虽然国内的疫情已经缓和,海外疫情却紧接着爆发了起来,截至到我写本篇文章时也没有任何缓和的迹象。现在仍然不知道这场疫情给全球带来的影响要持续到何时,我真心希望你在阅读这篇文章时,新冠已经成为了过去式,每个人都恢复到了正常的生活当中。

经过了如此多磨难才诞生的这本书,希望能给大家送去更多的知识吧。

第一行代码Android第3版课件思维导图源码免费版截图

下载地址

点击评论

热门评论
最新评论
昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)

TOP榜