推荐--《Android深入浅出》
基本信息
- 书名:Android深入浅出
- 作者:张旸 著
- 页数: 661
- 出版社: 机械工业出版社; 第1版 (2014年4月17日)
- 语种: 简体中文
- ASIN: B00JR3P8X0
- 品牌: 北京华章图文信息有限公司
推荐理由
以前一直在博客园发表Android相关的技术博客,经过一年多的精心准备,《Android深入浅出》一书终于出版。这是一本基于Android 4.x SDK,用其来开发Android应用。本书不仅能让你掌握Android应用开发所需要具备的基本知识,还会对Android 4.x开始的一些新特性做详细的介绍。本书由浅入深,从Android环境的搭建,到每个Android组件的原理以及使用都做了非常详尽的讲解,非常适合初学者进行系统的学习。同时,本书的内容也十分丰富,可以当做Android开发人员的参考手册来使用。
本书主要是写给对Android感兴趣的开发人员,为了使他们能够更快速的理解Android的组件以及原理,在本书的内容中,均为对应章节的内容提供了充分的示例程序。这些示例程序首先将教您如何使用Android的内容,然后解释其工作原理。本书将帮助读者从最基本的Android组件的使用以及原理入手,使读者充分理解Android SDK的底层架构与运行原理。但是Android开发是一个宏大的主题,任何一本都不可能面面俱到的介绍有关Android开发的全部内容,可我相信通过对本书的通读,将有充分的知识储备应对任何与Android开发相关的技术难点。
前言-主要内容
本书涵盖了使用Android SDK进行Android开发的基本概念,共分为19个章节。
“第一章 Android应用开发概述”介绍了Android系统的发展历史以及现如今的状况,并介绍了Android的系统结构以及Dalvik VM与JVM的区别和Android系统的优势,最后简单介绍了Android应用开发涉及到的几个基本组件。
“第二章 第一个Android应用程序”介绍了如何搭载Android的开发环境,以及如何使用Android SDK提供的工具协助Android的开发,最后将以一个简单的HelloWord应用讲解Android项目的目录结构。
“第三章 Android的UI编程”介绍了AndroidUI编程所涉及到的内容,包括在Android下如何进行UI编程、几种UI布局的使用、SDK中包含的UI组件的基本使用等等。
“第四章 事件处理机制”介绍了Android应用开发的事件处理机制,其中包括Android下基于监听和基于回调两种事件处理机制的详细内容,最后还简单讲解了Android系统设置被改变后如何进行相应。
“第五章 深入理解Activity”介绍了Android四大组件之一的Activity,Activity主要用于承载UI组件,该章中涉及到Activity的使用以及配置、Activity的生命周期、Activity状态的保存与恢复、Activity的回退栈以及Activity的启动模式,最后还简单的对Fragment这个Android的新特性做了详细的介绍。
“第六章 Intent和IntentFilter”介绍了如何在Android中使用Intent开启一个新的组件或者传递一段信息,并且详细介绍了Intent各个属性的具体含义,以及如何使用IntentFilter这个意图过滤器。最后以几个简单的示例讲解如何使用Intent调用系统应用协助工作,帮助读者更好的理解Intent和IntentFilter的工作原理。
“第七章 消息通知”介绍了在Android下如何将一段信息提示给用户知晓,其中涉及到Toast消息提示以及Notification消息提示。
“第八章 菜单”介绍了Android下菜单的使用,并在最后详细介绍了ActionBar这个Android的新特性。
“第九章 对话框”介绍了Android下如何使用对话框,其中涉及到对对话框的基本内容的讲解,以及警告对话框、进度对话框的基本使用。
“第十章 日志与测试”介绍了在Android下如何使用在应用运行的时候,实时的输入日志信息,以及如何使用JUnitTest这个单元测试框架,对Android应用程序进行白盒测试。
“第十一章 数据持久化”介绍了在Android应用程序中保存或存储数据。其中涉及到SharedPreferences保存配置信息、内部存储、外部存储、缓存存储以及SQLite这个轻量级的文件型数据库的使用。
“第十二章 Android的网络访问”介绍了Android应用程序如何与Web服务器进行交互,并简单介绍了与Web服务器交互传递的数据解析,其中包括常用的JSON和XML的解析。
“第十三章 Android的多线程”介绍了如何在Android应用程序中使用多线程的内容,其中涉及到一些多线程的内容、异步任务(AsyncTask)以及Handler的知识。
“第十四章 服务(Service)”介绍了Android四大组件之一的Service组件,在其中详细介绍了Service的基础内容,包括Service的使用、Service的配置、Service的分类以及Service使用过程中的一些注意事项。最后还详细的介绍了如何在进程间调用服务,AIDL服务的使用。
“第十五章 内容提供者(ContentProvider)”介绍了Android四大组件之一的ContentProvider组件,其中包括ContentProvider的基本内容,以及如何使用ContentProvider暴露出应用程序的数据,并且如何使用ContentObserver调用其它应用程序暴露出来的数据。最后还在ContentProvider的基础上讲解了装载机(Loader)这个Android新特性的内容。
“第十六章 广播接收器(BroadcastReceiver)”介绍了Android四大组件之一的BroadcastReceiver组件,其中包括BroadcastReceiver的分类、如何注册BroadcastReceiver、如何发送一个广播,最后介绍了如何拦截系统事件的广播。
“第十七章 图形与图像处理”介绍了Android应用中如何处理图形与图像的内容,其中包括图片资源的使用、对现有的图片进行绘图、变换等操作。最后还讲解了Android对动画效果的支持。
“第十八章 多媒体应用开发”介绍了如何在Android应用中使用多媒体的内容,其中包括如何播放一段音频、视频,如何使用相机获取照片以及如何录制一段音频或者视频。
“第十九章 Android应用的资源”介绍了如何使用Android应用程序中定义的一些资源文件,其中包括资源的类型以及访问方式的介绍,以及各项资源的详细使用。
目录
《Android深入浅出》... 1
1 Android应用开发概述... 9
1.1 Android发展史与现状... 9
1.2 Android的系统架构与特性... 10
1.2.1 Android系统架构... 10
1.2.2 Dalvik VM和JVM的区别... 12
1.2.3 Android系统平台的优势... 13
1.3 Android应用的基本组件... 14
1.3.1 活动(Activity)... 14
1.3.2 服务(Service)... 15
1.3.3 广播接收器(BroadcastReceiver)... 15
1.3.4 内容提供者(ContentProvider)... 15
1.3.5 意图(Intent)... 16
1.4 小结... 16
2 第一个Android应用程序... 16
2.1 搭载Android的开发环境... 16
2.1.1 安装Eclipse和ADT. 16
2.1.2 下载其它版本的Android SDK. 18
2.2 创建模拟器(AVD)... 21
2.3 Android版的HelloWord. 25
2.4 Android项目结构分析... 29
2.4.1 Android项目的目录结构... 29
2.4.2 自动生成的R.java. 31
2.4.3 清单文件AndroidManifest.xml 31
2.5 DDMS调试环境... 33
2.6 小结... 35
3 Android的UI编程... 36
3.1 UI概述... 36
3.2 使用UI组件... 37
3.2.1 UI的常用属性及方法... 37
3.2.2 XML布局文件定义UI组件... 38
3.2.3 Java代码动态定义UI组件... 40
3.3 UI布局... 42
3.3.1 布局基类(ViewGroup)... 42
3.3.2 线性布局(LinearLayout)... 43
3.3.3 帧布局(FrameLayout)... 45
3.3.4 相对布局(RelativeLayout)... 47
3.3.5 表格布局(TableLayout)... 49
3.3.6 绝对布局(AbsoluteLayout)... 51
3.4 基本UI组件... 53
3.4.1 文本框(TextView)... 53
3.4.2 编辑框(EditText)... 61
3.4.3 按钮(Button)... 68
3.4.4 单选、复选按钮(RadioButton、CheckBox)... 75
3.4.5 开关按钮(ToggleButton、Switch)... 82
3.4.6 进度条组件(ProgressBar)... 85
3.4.7 日期、时间相关组件... 96
3.4.8 图像控件(ImageView)... 104
3.5 高级UI组件... 107
3.5.1 数据适配器(Adapter)浅析... 107
3.5.2 自动完成文本框(AutoCompleteTextView)... 109
3.5.3 列表选择组件(Spinner)... 113
3.5.4 列表视图(ListView)... 121
3.5.5 网格视图组件(GridView)... 128
3.5.6 滚动视图组件(ScrollView)... 135
3.5.7 图片切换器(ImageSwitcher)... 137
3.5.8 惰性装载组件 (ViewStub) 141
3.5.9 网络视图(WebView)... 145
3.6 小结... 149
4 事件处理机制... 149
4.1 Android的事件处理机制... 149
4.2 基于监听器的事件处理... 150
4.2.1 基于监听器的事件处理模型... 150
4.2.2 内部类实现事件监听器... 152
4.2.3 外部类实现事件监听器... 153
4.2.4 Activity本身作为事件监听器... 154
4.2.5 匿名内部类作为事件监听器... 155
4.2.6 使用XML属性设置事件处理器... 157
4.3 基于回调的事件处理... 158
4.3.1 回调机制... 159
4.3.2 基于回调的事件传播... 160
4.4 响应系统设置事件... 162
4.4.1 Configuration简介... 162
4.4.2 监听系统设置的更改... 163
4.5 小结... 165
5 深入理解Activity. 166
5.1 Activity基础... 166
5.1.1 Activity简介... 166
5.1.2 配置Activity. 168
5.1.3 启动和关闭一个Activity. 169
5.1.4 从新启动的Activity中返回数据... 170
5.1.5 在Activity间使用Bundle传递数据... 174
5.2 Activity的生命周期... 175
5.2.1 Activity生命周期基础... 175
5.2.2 Activity生命周期转换过程... 177
5.2.3 Activity生命周期简单应用... 180
5.3 保存Activity的状态... 182
5.3.1 Activity的状态保存简介... 182
5.3.2 状态保存与恢复的时机... 183
5.3.3 onSaveInstanceState()方法的默认实现... 186
5.4 任务(Task)与回退栈(Back Stack)... 187
5.4.1 Activity的任务(Task)... 187
5.4.2 Activity的回退栈(Back Stack)... 188
5.5 Activity的启动模式(launchMode)... 188
5.5.1 标准模式(standard)... 188
5.5.2 单顶模式(singleTop)... 189
5.5.3 单任务模式(singleTask)... 190
5.5.4 单例模式(singleInstance)... 190
5.5.5 动态设置启动模式... 191
5.6 Fragment. 191
5.6.1 Fragment简介... 191
5.6.2 Fragment的设计理念... 192
5.6.3 创建一个Fragment. 192
5.6.4 Fragment的生命周期... 195
5.6.5 管理Fragment. 197
5.6.6 在Fragment中交互... 200
5.6.7 Fragement向下兼容... 203
5.7 小结... 203
6 Intent和IntentFilter. 204
6.1 Intent和IntentFilter简介... 204
6.2 Intent的分类... 205
6.3 一个Intent的基本组成与配置... 206
6.3.1 Component Name. 206
6.3.2 Action. 208
6.3.3 Category. 209
6.3.4 Data. 212
6.3.5 Extra. 213
6.3.6 Flag. 213
6.4 意图过滤器(IntentFilter)... 214
6.5 使用Intent启动系统内置应用... 214
6.5.1 向拨号器传递号码... 215
6.5.2 直接拨打电话... 216
6.5.3 展示联系人列表... 216
6.5.4 编辑短信... 217
6.5.5 启动浏览器访问网页... 218
6.5.6 返回系统HOME桌面... 219
6.6 小结... 220
7 消息通知... 220
7.1 使用Toast提示消息... 221
7.1.1 使用Toast提示简单消息... 221
7.1.2 使用Toast提示定制消息... 222
7.2 使用Notification提示消息... 223
7.2.1 Notification的基础内容... 223
7.2.2 更新与移除Notification. 225
7.2.3 响应Notification. 225
7.2.4 Notification的显示风格... 227
7.2.5 进度条样式的Notification. 230
7.2.6 定制Notification样式... 233
7.2.7 Notification的提示响应... 234
7.3 小结... 235
8 菜单... 235
8.1 选项菜单(OptionMenu)... 235
8.1.1 选项菜单基础... 235
8.1.2 处理选项菜单的点击事件... 237
8.1.3 在运行时更新菜单项... 239
8.2 使用XML定义一个菜单... 239
8.3 上下文菜单(ContextMenu)... 242
8.4 活动模式(ActionMode)... 245
8.5 弹出菜单(PupopMenu)... 248
8.6 功能栏(ActionBar)... 250
8.6.1 ActionBar简介... 250
8.6.2 添加移除ActionBar. 250
8.6.3 添加Action Items. 251
8.6.4 响应Action Items的选择... 253
8.6.5 通过ActionBar图标来导航... 254
8.6.6 添加Action View.. 255
8.6.7 添加一个ActionProvider. 258
8.6.8 添加Tab导航... 260
8.6.9 添加一个下拉式导航... 265
8.6.10 ActionBar的样式... 267
8.7 小结... 268
9 对话框... 268
9.1 对话框(Dialog)... 268
9.2 警告对话框(AlertDialog)... 268
9.2.1 AlertDialog基础... 268
9.2.2 为AlertDialog增加按钮... 270
9.2.3 列表形式的AlertDialog. 272
9.2.4 单选列表的AlertDialog. 273
9.2.5 多选列表的AlertDialog. 275
9.2.6 自定义布局AlertDialog. 277
9.3 进度对话框(ProgressDialog)... 278
9.3.1 循环滚动的进度对话框... 279
9.3.2 有刻度的进度对话框... 280
9.4 小结... 281
10 日志与测试... 282
10.1 日志(Log)... 282
10.1.1 日志简介... 282
10.1.2 LogCat与Log Filter. 282
10.1.3 System日志... 285
10.2 单元测试(JUnit Test)... 286
10.2.1 编写业务逻辑方法与测试用例... 286
10.2.2 在清单文件中添加对JUnite支持... 287
10.2.3 执行测试用例方法... 289
10.3 小结... 292
11 数据持久化... 292
11.1 共享参数(SharedPreferences)... 293
11.1.1 得到SharedPreferences并读取数据... 293
11.1.2 向SharedPreferences中写入数据... 294
11.1.3 SharedPreferences的保存方式... 296
11.1.4 读写其它应用程序的SharedPreferences. 297
11.2 文件存储(File Storage)... 300
11.2.1 FileInputStream和FileOutputStream.. 300
11.2.2 内部存储(Internal Storage)... 301
11.2.3 缓存(cache)... 306
11.2.4 外部存储(External Storage)... 309
11.3 SQLite数据库(SQLite Database)... 313
11.3.1 Android中的SQLite. 313
11.3.2 创建与维护SQLite数据库... 313
11.3.3 SQL语句实现增删改查(CRUD)... 315
11.3.4 SQLiteDatabase封装的方法实现增删改查... 321
11.3.5 SQLite的事务... 329
11.4 小结... 330
12 Android的网络访问... 330
12.1 HTTP协议简介... 330
12.2 使用URL访问网络资源... 331
12.2.1 HttpURLConnection简介... 331
12.2.2 使用HttpURLConnection实现 GET请求... 332
12.2.3 使用HttpURLConnection实现POST请求... 335
12.3 使用HttpClient访问网络... 339
12.3.1 HttpClient简介... 339
12.3.2 使用DefaultHttpClient. 340
12.3.3 使用AndroidDefaultHttpClient. 343
12.4 解析XML格式数据... 347
12.4.1 XML简介... 347
12.4.2 使用SAX解析XML. 347
12.4.3 使用XMLPULL解析XML. 353
12.4.4 使用DOM解析XML. 357
12.5 解析JSON格式数据... 361
12.5.1 JSON简介... 361
12.5.2 org.json解析JSON.. 362
12.6 小结... 369
13 Android的多线程... 370
13.1 Android的进程与线程关系... 370
13.1.1 Android的进程... 370
13.1.2 Android的线程... 371
13.2 异步任务(AsyncTask)... 374
13.3 Handler. 378
13.3.1 Handler简介... 378
13.3.2 Handler的Post方式... 379
13.3.3 Handler的Message方式... 383
13.3.4 Handler的原理... 389
13.4 多线程图文混排示例... 394
13.5 小结... 399
14 服务(Service)... 399
14.1 服务(Service)基础... 400
14.1.1 服务(Service)简介... 400
14.1.2 服务在清单文件中的配置... 400
14.1.3 Service的开发步骤... 401
14.1.4 启动服务(Start Service)... 401
14.1.5 绑定服务(Bind Service)... 404
14.1.6 Service生命周期详解... 409
14.1.7 Service类型选用... 410
14.2 Service的一些高级内容... 411
14.2.1 Service与Thread的区别... 411
14.2.2 意图服务(IntentService)... 411
14.2.3 前台服务(Foreground Service)... 414
14.2.4 当服务被系统以外回收时... 417
14.2.5 不被销毁的服务... 418
14.3 绑定服务的信息交互详解... 418
14.3.1 使用IBinder接口进行数据交互... 419
14.3.2 使用Messenger类进行数据交互... 422
14.4 跨进程服务(AIDL服务)... 426
14.4.1 什么是AIDL. 426
14.4.2 如何定义一个AIDL. 427
14.4.3 AIDL做了是什么... 427
14.4.4 使用AIDL传递基本类型数据... 427
14.4.5 使用AIDL传递自定义对象... 432
14.5 小结... 445
15 内容提供者(ContentProvider)... 445
15.1 应用程序间的数据共享... 445
15.1.1 内容提供者(ContentProvider)简介... 446
15.1.2 Uri简介... 447
15.1.3 内容解析者(ContentResolver)简介... 448
15.2 使用ContentProvider向外提供数据示例... 448
15.3 操作系统应用的ContentProvider. 456
15.3.1 获取短信应用中的所有短信... 456
15.3.2 恢复短信信息到短信应用... 458
15.4 内容观察者(ContentObserver)... 459
15.4.1 使用内容观察者监听数据变化... 459
15.4.2 ContentObserver监听原理... 462
15.5 Loader(装载机)... 462
15.5.1 Loader简介... 462
15.5.2 Loader的API概述... 463
15.5.3 使用Loader示例... 464
15.6 小结... 469
16 广播接收者(BroadcastReceiver)... 469
16.1 BroadcastReceiver简介... 469
16.2 BroadcastReceiver分类... 470
16.3 注册广播接收者... 470
16.4 使用BroadcastReceiver的简单示例... 471
16.5 拦截系统广播... 473
16.5.1 系统中的广播(Broadcast)... 473
16.5.2 通过关键字拦截短信息... 473
16.5.3 实现IP拨号... 475
16.6 小结... 477
17 图形与图像处理... 477
17.1 图片的使用... 477
17.1.1 Drawable对象... 478
17.1.2 Bitmap和BitmapFactory. 478
17.1.3 图片加载引起的OOM问题... 479
17.1.4 操作图片的Exif信息... 482
17.2 绘图... 487
17.2.1 画布Canvas. 487
17.2.2 画笔Paint. 488
17.2.3 使用Canvas实现画图板... 488
17.3 图形特效处理... 493
17.3.1 使用Matrix控制图片变换... 493
17.3.2 使用ColorMatrix改变图片颜色... 498
17.4 逐帧动画FrameAnimation. 501
17.4.1 逐帧动画简介... 501
17.4.2 使用XML定义资源文件设置动画帧... 502
17.4.3 使用Java代码动态创建逐帧动画... 505
17.5 补间动画... 508
17.5.1 Animation简介... 508
17.5.2 AlphaAnimation控制透明度动画... 509
17.5.3 RotateAnimation控制旋转动画... 511
17.5.4 ScaleAnimation控制缩放动画... 513
17.5.5 TranslateAnimation控制位移动画... 515
17.5.6 AnimationSet控制组合动画... 516
17.5.7 Animation变化坐标点的参照类型... 519
17.5.8 Animation的Interpolator. 519
17.6 小结... 520
18 多媒体应用开发... 520
18.1 音频的播放... 520
18.1.1 使用MediaPlayer播放音频... 520
18.1.2 使用SoundPool播放音效... 532
18.2 视频的播放... 536
18.2.1 SurfaceView播放视频... 536
18.2.2 VideoView播放视频... 544
18.3 使用相机Camera拍照... 552
18.3.1 使用系统照相机拍照与摄像... 553
18.3.2 使用Camera拍照... 560
18.4 MediaRecorder录音录像... 566
18.4.1 MediaRecorder简介... 566
18.4.2 使用MediaRecorder录音... 569
18.4.3 使用MediaRecorder录制视频... 572
18.5 小结... 576
19 Android应用的资源... 576
19.1 资源的类型与访问方式... 576
19.1.1 资源的类型与存储方式... 577
19.1.2 使用资源... 577
19.2 使用简单的< resources…/>资源... 578
19.3 使用Drawable资源... 581
19.3.1 Bitmap资源... 581
19.3.2 LayerDrawable资源... 582
19.3.3 StateListDrawable资源... 584
19.3.4 ClipDrawable资源... 585
19.3.5 ShapeDrawable资源... 588
19.4 样式(Style)和主题(Theme)资源... 590
19.4.1 样式(Style)资源... 590
19.4.2 主题(Theme)资源... 592
19.5 使用原始资源... 593
19.6 总结... 594