Android [1]是由Google 公司发布的专门为移动设备开发的、完全免费的平台,使用它不需要授权费,可以完全定制。另外,由于Android 底层架构使用开源的Linux 操作系统,同时开放了应用程序开发工具,使所有程序开发人员都可以在统一的、开放的平台上进行开发,从而保证了Android应用程序的可移植性。因此Android 已经成为全球最受欢迎的智能手机操作系统之一,受到越来越多编程爱好者的青睐。
本书知识系统全面,讲解详细,结合大量实例,帮助读者更好地巩固所学知识,提升能力。书中设置e 学码,不易理解的专业术语、代码难点只需用手机扫描文字下方的e 学码即可获取更多扩展解释,随时扫除学习障碍。此外,登录明日学院还可以获取更多学习资源和技术支持。
《Android 开发详解》是一本综合开发参考书,书中几乎囊括了使用Android 进行程序开发的全部知识,既适合初学者入门,又适合开发者进阶。本书共28 章,依次讲解了Android 旅程之起点,Android Studio 的常用技巧,App UI 设计,初级UI 控件,中级UI 控件,高级UI 控件,Android 权限机制与支持库的应用,自定义控件,主角(Activity)与配角(Intent),Android 程序的修理工,事件与手势,Android 基本资源访问,Android 高级资源的调用,Action Bar 的使用,消息、通知、广播与闹钟,图形图像处理技术,Android 中的动画,播放音频与视频,拍照与显示图片,利用OpenGL 实现3D 图形,数据存储技术,默默付出的后台工作者,传感器应用,位置服务与地图应用,网络编程及Internet 应用,Android 中的小部件,常用的第三方技术,发布你的App。书中所有知识都结合具体实例进行讲解,实例代码给出了详细的注释,可以逐步引导读者学习并掌握Android 程序开发的知识、方法和技巧,快速提升开发技能。
第1章 Android 旅程之起点.....1
1.1 走近Android ................................1
1.1.1 智能手机操作系统....................1
1.1.2 Android发展史.......................2
1.1.3 Android应用领域.....................3
1.2 搭建Android开发环境........................4
1.2.1 开发环境概述........................4
1.2.2 集成Android开发环境的下载...........5
1.2.3 集成Android开发环境的安装...........8
1.3 与Android应用初次相见.................... 15
1.3.1 创建Android应用程序............... 15
1.3.2 Android项目结构类型............... 21
1.3.3 使用Android模拟器................. 26
1.3.4 运行Android应用................... 30
1.4 知识回顾................................. 33
第2第2章 Android Studio 的常用技巧............ 34
2.1 Android Studio的基本了解.................. 34
2.1.1 了解配置界面...................... 34
2.1.2 外观设置.......................... 37
2.1.3 Android Studio的主窗口............. 39
2.1.4 常用的工具窗口.................... 41
2.2 导入项目与模块........................... 43
2.2.1 导入Android Studio项目............ 43
2.2.2 导入Eclipse项目................... 45
2.2.3 导入模块.......................... 47
2.2.4 创建与导入.AAR包................. 48
2.3 自定义图标............................... 51
2.4 Android Studio快捷键的使用................ 55
2.4.1 编辑类............................ 55
2.4.2 视图类............................ 62
2.4.3 编码类............................ 65
2.5 知识回顾................................. 68
第3第3章 App UI 设计.......... 69
3.1 UI设计相关的概念......................... 69
3.1.1 View ............................. 69
3.1.2 ViewGroup ........................ 70
3.2 设计UI界面............................... 72
3.2.1 使用XML布局文件设计UI界面....... 72
3.2.2 在Java代码中设计UI界面........... 74
3.2.3 使用XML和Java代码混合设计UI界面.. 77
3.2.4 开发自定义的View类............... 78
3.3 布局管理器............................... 81
3.3.1 相对布局管理器.................... 81
3.3.2 线性布局管理器.................... 84
3.3.3 帧布局管理器...................... 88
3.3.4 表格布局管理器.................... 90
3.3.5 网格布局管理器.................... 93
3.3.6 布局管理器的嵌套.................. 97
3.4 常用App UI界面设计....................... 99
3.5 知识回顾................................ 107
第第4章 初级UI 控件........ 108
4.1 文本类控件(初级)...................... 108
4.1.1 文本框........................... 108
4.1.2 编辑框............................112
4.2 按钮类控件(初级).......................115
4.2.1 普通按钮..........................116
4.2.2 图片按钮..........................119
4.3 图像类控件.............................. 123
III
4.3.1 图像视图......................... 124
4.3.2 网格视图......................... 127
4.4 知识回顾................................ 130
第5章 中级UI 控件......... 131
5.1 文本类控件(中级)...................... 131
5.1.1 自动完成文本框................... 131
5.1.2 文本切换器....................... 134
5.2 按钮类控件(中级)...................... 137
5.2.1 状态开关按钮..................... 137
5.2.2 单选按钮......................... 140
5.2.3 复选框........................... 145
5.3 进度条类控件............................ 148
5.3.1 进度条........................... 149
5.3.2 拖动条........................... 153
5.3.3 星级评分条....................... 156
5.4 知识回顾................................ 160
第第6章 高级UI 控件......... 161
6.1 图像类控件(高级)...................... 161
6.1.1 图像切换器(ImageSwitcher)...... 161
6.1.2 画廊视图(Gallery)............... 166
6.2 列表类控件.............................. 169
6.2.1 下拉列表框(Spinner)............ 169
6.2.2 列表视图(ListView).............. 173
6.3 切换类控件.............................. 177
6.3.1 控件的切换(ViewFlipper)......... 178
6.3.2 翻页控件(ViewPager)............ 180
6.3.3 翻页的标题栏(PagerTabStrip)..... 185
6.4 通用控件................................ 188
6.4.1 滚动视图......................... 188
6.4.2 选项卡........................... 192
6.4.3 搜索框(SearchView)............... 195
6.5 知识回顾................................ 199
第7第7章 Android 权限机制与
支持库的应用........ 200
7.1 Android权限机制.......................... 200
7.2 Android支持库的常用控件.................. 204
7.2.1 工具栏(ToolBar)................. 204
7.2.2 折叠标题栏
(CollapsingToolbarLayout)......... 208
7.2.3 卡片式布局(CardView)........... 212
7.2.4 滑动菜单(DrawerLayout)......... 215
7.2.5 下拉刷新(SwipeRefreshLayout)... 219
7.3 增强型滚动控件.......................... 222
7.3.1 RecyclerView的基础用法........... 223
7.3.2 RecyclerView的网格布局........... 228
7.3.3 RecyclerView的瀑布流网格布局..... 230
7.4 知识回顾................................ 234
第第8章 自定义控件.......... 235
8.1 自定义控件实现流程...................... 235
8.1.1 自定义属性....................... 235
8.1.2 测量尺寸......................... 238
8.1.3 绘制View......................... 239
8.2 自定义控件.............................. 242
8.2.1 嵌套在ScrollView中的列表.......... 242
8.2.2 外星人手机时钟................... 243
8.3 知识回顾................................ 248
第第9章 主角(Activity)与配角(Intent)............ 249
9.1 主角的作用.............................. 249
9.2 主角的艰辛历程.......................... 251
9.2.1 创建Activity....................... 251
9.2.2 配置Activity....................... 253
9.2.3 启动和关闭Activity................. 253
9.3 主角之间的交流.......................... 256
9.3.1 配角很重要....................... 256
9.3.2 显式Intent........................ 258
9.3.3 隐式Intent........................ 258
9.3.4 Intent过滤器...................... 262
9.3.5 多个Activity之间交换数据........... 266
9.3.6 调用另一个Activity并返回结果....... 269
9.4 使用碎片(Fragment).................... 273
9.4.1 Fragment的生命周期............... 273
9.4.2 创建Fragment..................... 274
IV
9.4.3 在Activity中添加Fragment.......... 275
9.5 知识回顾................................ 280
第1第10章 Android 程序的修理工................. 281
10.1 DDMS工具的使用....................... 281
10.1.1 在Android Studio中打开DDMS..... 281
10.1.2 DDMS常用功能详解.............. 282
10.2 输出日志信息........................... 285
10.2.1 Log.e()方法...................... 286
10.2.2 Log.w()方法..................... 286
10.2.3 Log.i()方法...................... 286
10.2.4 Log.d()方法...................... 287
10.2.5 Log.v()方法...................... 287
10.3 程序调试............................... 288
10.3.1 Android Studio编辑器调试......... 288
10.3.2 Android Studio调试器调试......... 289
10.4 知识回顾............................... 291
第11第11章 事件与手势......... 292
11.1 互动规则................................ 292
11.1.1 基于监听的事件处理.............. 292
11.1.2 基于回调的事件处理.............. 293
11.2 物理按键互动............................ 293
11.3 触摸屏互动.............................. 296
11.3.1 单击事件........................ 296
11.3.2 长按事件........................ 296
11.3.3 触摸事件........................ 298
11.3.4 单击事件与触摸事件的区别........ 300
11.3.5 事件的综合应用.................. 301
11.4 手势检测................................ 304
11.5 知识回顾................................ 307
第第12章 Android 基本资源访问............ 308
12.1 字符串(string)资源.................... 308
12.1.1 定义字符串资源文件.............. 308
12.1.2 使用字符串资源.................. 309
12.2 颜色(color)资源....................... 310
12.2.1 颜色值的定义.................... 310
12.2.2 定义颜色资源文件................ 310
12.2.3 使用颜色资源.....................311
12.3 尺寸(dimen)资源...................... 312
12.3.1 Android支持的尺寸单位........... 312
12.3.2 使用尺寸资源.................... 312
12.4 布局(layout)资源...................... 316
12.5 数组(array)资源....................... 316
12.5.1 定义数组资源文件................ 317
12.5.2 使用数组资源.................... 317
12.6 样式(style)资源....................... 319
12.7 Android程序国际化....................... 321
12.8 知识回顾............................... 324
第13第13章 Android 高级资源的调用............... 325
13.1 菜单(menu)资源...................... 325
13.1.1 定义菜单资源文件................ 325
13.1.2 使用菜单资源.................... 326
13.2 图像资源............................... 330
13.2.1 图片资源........................ 330
13.2.2 StateListDrawable资源............ 333
13.2.3 ShapeDrawable资源.............. 337
13.2.4 LevelListDrawable资源............ 342
13.2.5 ClipDrawable资源................ 345
13.2.6 LayerDrawable资源............... 348
13.2.7 mipmap资源..................... 350
13.3 知识回顾............................... 351
第1第14章 Action Bar 的使用... 352
14.1 Action Bar概述.......................... 352
14.2 Action Bar基本应用...................... 353
14.2.1 显示和隐藏Action Bar............. 353
14.2.2 添加Action Item选项.............. 355
14.2.3 添加Action View................. 357
14.2.4 Action Bar与Tab.................. 359
14.3 实现层级式导航......................... 363
14.3.1 启用程序图标导航................ 363
14.3.2 配置父Activity.................... 363
14.3.3 控制导航图标的显示.............. 364
V
14.4 知识回顾............................... 366
第15第15章 消息、通知、广播与闹钟............... 367
15.1 通过Toast类显示消息提示框............... 367
15.2 对话框与弹出窗口的使用................. 368
15.2.1 使用AlertDialog类实现对话框...... 368
15.2.2 TimePickerDialog与
DatePickerDialog的使用.......... 374
15.2.3 进度对话框(ProgressDialog)....... 377
15.2.4 弹出窗口(PopupWindow)....... 380
15.3 使用Notification在状态栏上显示通知....... 385
15.4 BroadcastReceiver使用.................. 388
15.4.1 BroadcastReceiver简介........... 388
15.4.2 BroadcastReceiver应用........... 390
15.5 使用AlarmManager设置闹钟.............. 392
15.5.1 AlarmManager简介............... 392
15.5.2 设置一个简单的闹钟.............. 393
15.6 知识回顾............................... 395
第1第16章 图形图像处理技术... 396
16.1 常用绘图类............................. 396
16.1.1 Paint类.......................... 396
16.1.2 Canvas类....................... 398
16.1.3 Path类.......................... 399
16.1.4 Bitmap类........................ 400
16.1.5 BitmapFactory类................. 401
16.2 绘制2D图像............................. 401
16.2.1 绘制几何图形.................... 401
16.2.2 绘制文本........................ 404
16.2.3 绘制图片........................ 405
16.2.4 绘制路径........................ 407
16.3 知识回顾................................411
第1第17章 Android 中的动画.... 412
17.1 逐帧动画............................... 412
17.2 补间动画............................... 414
17.2.1 旋转动画(RotateAnimation)..... 415
17.2.2 缩放动画(ScaleAnimation)...... 416
17.2.3 平移动画(Translate Animation).. 417
17.2.4 透明度渐变动画(AlphaAnimation).. 418
17.3 属性动画............................... 421
17.3.1 属性动画的使用.................. 421
17.3.2 属性动画组合.................... 426
17.4 知识回顾............................... 430
第1第18章 播放音频与视频..... 431
18.1 播放音频............................... 431
18.1.1 使用MediaPlayer播放音频......... 431
18.1.2 使用SoundPool类播放音频........ 436
18.1.3 动态显示歌词的音乐播放器........ 439
18.2 播放视频............................... 444
18.2.1 使用VideoView播放视频........... 444
18.2.2 使用MediaPlayer和SurfaceView
播放视频........................ 446
18.2.3 添加视频弹幕.................... 450
18.3 知识回顾............................... 455
第1第19章 拍照与显示图片..... 456
19.1 控制摄像头............................. 456
19.1.1 拍照............................ 456
19.1.2 使用Camera2进行拍照........... 460
19.1.3 录制视频........................ 470
19.2 调用系统相机与图库..................... 475
19.2.1 使用Intent启动系统相机........... 475
19.2.2 使用Intent浏览图库并选取图片..... 478
19.3 知识回顾............................... 482
第第20章 利用OpenGL 实现3D图形............... 483
20.1 OpenGL简介............................ 483
20.2 绘制3D图形............................. 484
20.2.1 构建3D开发的基本框架............ 484
20.2.2 绘制一个模型.................... 486
20.3 添加效果............................... 491
20.3.1 应用纹理贴图.................... 491
20.3.2 旋转............................ 493
20.3.3 光照效果........................ 494
20.3.4 透明效果........................ 496
20.4 知识回顾............................... 497
第2第21章 数据存储技术....... 498
21.1 SharedPreferences存储.................. 498
21.1.1 获取SharedPreferences类......... 499
21.1.2 向SharedPreferences文件中存储数据... 499
21.1.3 读取SharedPreferences文件中
存储的数据...................... 500
21.2 文件存储............................... 502
21.2.1 内部存储........................ 502
21.2.2 外部存储........................ 506
21.3 数据库存储............................. 509
21.3.1 创建数据库...................... 509
21.3.2 数据操作........................ 509
21.4 使用Content Provider实现数据共享........ 515
21.4.1 Content Provider概述............. 515
21.4.2 创建Content Provider............. 517
21.4.3 使用Content Provider............. 519
21.5 知识回顾............................... 522
第22第22章 默默付出的后台工作者............. 523
22.1 多线程................................. 523
22.1.1 创建线程........................ 523
22.1.2 开启线程........................ 524
22.1.3 线程的休眠...................... 524
22.1.4 中断线程........................ 525
22.2 Handler消息传递机制.................... 527
22.2.1 Handler类简介................... 529
22.2.2 Handler类中的常用方法........... 529
22.2.3 Handler与Looper、MessageQueue的关系............................ 531
22.2.4 消息类(Message).............. 532
22.3 Service的应用........................... 534
22.3.1 Service的分类................... 535
22.3.2 Service的生命周期............... 535
22.3.3 创建与配置Service............... 536
22.3.4 启动和停止Service............... 539
22.3.5 Bound Service................... 542
22.3.6 IntentService.................... 545
22.4 知识回顾............................... 547
第2第23章 传感器应用......... 548
23.1 Android传感器概述....................... 548
23.1.1 Android的常用传感器............. 549
23.1.2 开发步骤........................ 550
23.2 方向传感器............................. 555
23.3 磁场传感器............................. 559
23.4 加速度传感器........................... 562
23.5 知识回顾............................... 564
第第24章 位置服务与地图应用.. 565
24.1 位置服务............................... 565
24.1.1 获取LocationProvider............. 567
24.1.2 获取定位信息.................... 570
24.2 百度地图服务........................... 573
24.2.1 获取地图API密钥................. 573
24.2.2 下载SDK开发包.................. 576
24.2.3 创建使用百度地图API的项目....... 577
24.2.4 定位到我的位置.................. 580
24.3 知识回顾............................... 584
第2第25章 网络编程及Internet应用............... 585
25.1 通过HTTP访问网络...................... 585
25.1.1 发送GET请求.................... 586
25.1.2 发送POST请求................... 589
25.2 通过OkHttp3访问网络.................... 593
25.2.1 OkHttp3简介..................... 593
25.2.2 OkHttp3的基本用法............... 594
25.3 解析JSON格式数据...................... 597
25.3.1 JSON简介....................... 597
25.3.2 解析JSON数据................... 598
25.3.3 使用GSON解析数据.............. 600
25.4 使用WebView显示网页................... 603
25.4.1 使用WebView控件浏览网页........ 604
25.4.2 使用WebView加载HTML代码...... 606
25.4.3 让WebView支持JavaScript........ 608
25.5 知识回顾................................611
第26第26章 Android 中的小部件... 612
26.1 Widget简介............................. 612
26.2 Widget基础............................. 613
26.2.1 设计原则........................ 613
26.2.2 开发步骤........................ 615
26.2.3 安装及删除...................... 618
26.3 Widget配置............................. 618
26.3.1 在Widget元数据文件中声明Activity... 619
26.3.2 创建配置Widget的Activity.......... 619
26.3.3 获取Widget的ID.................. 621
26.3.4 更新Widget...................... 621
26.3.5 设置返回信息并关闭Activity........ 621
26.4 Widget与Service........................ 622
26.5 知识回顾............................... 626
第2第27章 常用的第三方技术... 627
27.1 第三方登录............................. 627
27.1.1 申请第三方账号.................. 628
27.1.2 实现第三方登录.................. 628
27.2 社会化分享............................. 636
27.2.1 QQ分享......................... 636
27.3 微信分享............................... 640
27.4 第三方支付............................. 645
27.4.1 微信支付........................ 645
27.4.2 支付宝支付...................... 646
27.5 知识回顾............................... 648
第2第28章 发布你的App....... 649
28.1 导出APK安装包............................................. 649
28.2 发布App................................ 651
28.2.1 开发者实名认证.................. 651
28.2.2 上传应用........................ 654
28.3 知识回顾............................... 654
附附录1 快捷键介绍...............655
附附录2 Android 代码编写规范..656