0%

基本信息

名称: 深入理解Android网络编程 技术详解与最佳实践
作者信息: 作者: 陈文 [ 中文 pdf ]

简单介绍

系统讲解Android网络编程的各项核心技术和功能模块,多个案例解读Android网络编程的方法和技巧 从源码角度深入解析Android核心网络处理方法和关键应用的实现原理,包含大量最佳实践

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
前言
第一篇概述篇
第1章Android网络编程概要2
1.1 Android简介2
1.1.1 Android的发展2
1.1.2 Android功能特性3
1.1.3 Android系统构架4
1.2 Android网络程序的功能6
1.2.1通信功能6
1.2.2及时分享6
1.2.3个人管理6
1.2.4娱乐游戏7
1.2.5企业应用7
1.3设置Android开发环境7
1.3.1相关下载7
1.3.2安装ADT9
1.3.3Hello World!11
1.4网络应用实战案例17
1.4.1加载一个页面17
1.4.2下载一个页面21
1.5小结21
第二篇实战篇
第2章Android基本网络技术和编程实践24
2.1计算机网络及其协议24
2.1.1计算机网络概述24
2.1.2网络协议概述25
2.1.3IP、TCP和UDP协议26
2.2在 Android中使用TCP、UDP协议31
2.2.1Socket基础31
2.2.2使用TCP通信34
2.2.3使用UDP通信36
2.3 Socket实战案例39
2.3.1 Socket聊天举例39
2.3.2 FTP客户端41
2.3.3 Telnet客户端44
2.4小结46
第3章Android基本Web技术和编程实践47
3.1 HTTP协议47
3.1.1 HTTP简介47
3.1.2实战案例:基于HTTP协议的文件上传51
3.2 Android中的HTTP编程57
3.2.1 HttpClient和URLConnection57
3.2.2Post和Get在HttpClient的使用58
3.2.3实战案例:使用HttpClient和URLConnection访问维基百科60
3.3Android处理JSON64
3.3.1JSON简介64
3.3.2JSON数据解析65
3.3.3JSON打包67
3.3.4实战案例:JSON解析wikipedia内容68
3.4Android处理SOAP71
3.4.1SOAP简介71
3.4.2SOAP消息72
3.4.3实战案例:SOAP解析天气服务74
3.5Android对HTML的处理79
3.5.1解析HTML79
3.5.2HTML适配屏幕80
3.5.3JavaScript混合编程81
3.5.4实战案例:Android自定义打开HTML页面87
3.6小结91
第4章Android常见网络接口编程92
4.1Android解析和创建XML92
4.1.1XML简介92
4.1.2DOM解析XML97
4.1.3SAX解析XML102
4.1.4PULL解析XML108
4.1.5实战案例:Android中创建XML110
4.2Android订阅RSS113
4.2.1RSS简介113
4.2.2实战案例:简单RSS阅读器115
4.3AndroidEmail编程122
4.3.1Android发送Email122
4.3.2实战案例:Android下Email的Base64加密123
4.4Android网络安全125
4.4.1Android网络安全简介125
4.4.2Android加密和解密127
4.4.3实战案例:Android应用添加签名133
4.5OAuth认证135
4.5.1OAuth简介135
4.5.2实战案例:使用OAuth接口137
4.6小结139
第5章Android网络模块编程141
5.1Android地图和定位141
5.1.1获取map—api密钥141
5.1.2获取位置144
5.1.3实战案例:利用MapView显示地图146
5.2USB编程150
5.2.1USB主从设备150
5.2.2USBAccessoryMode151
5.2.3USBHostMode157
5.2.4实战案例:Android和Arduino交互159
5.3Wi—Fi编程168
5.3.1AndroidWi—Fi相关类168
5.3.2AndroidWi—Fi基本操作171
5.3.3实战案例:使用Wi—Fi直连方式传输文件177
5.4蓝牙编程185
5.4.1蓝牙简介185
5.4.2Android蓝牙API分析185
5.4.3Android蓝牙基本操作187
5.4.4实战案例:蓝牙连接192
5.5NFC编程简介197
5.5.1NFC技术简介197
5.5.2NFCAPI简介198
5.5.3NFC处理流程分析199
5.6小结205
第6章Android线程、数据存取、缓存和UI同步206
6.1Android线程206
6.1.1Android线程模型206
6.1.2异步任务类211
6.1.3实战案例:利用AsyncTask实现多线程下载213
6.2数据存取214
6.2.1 Shared Preferences数据存储215
6.2.2 Internal Storage数据存储216
6.2.3 External Storage数据存储217
6.2.4SQLiteDatabases数据存储219
6.2.5实战案例:SQLite数据库操作220
6.3网络判定227
6.3.1判断用户是否连接228
6.3.2判断网络连接的类型228
6.3.3监控网络连接改变228
6.3.4实战案例:根据广播消息判断网络连接情况228
6.4消息缓存230
6.4.1Android中的缓存机制230
6.4.2实战案例:下载、缓存和显示图片231
6.5界面更新236
6.5.1刷新数据时的界面更新236
6.5.2完成任务时的界面更新237
6.5.3实战案例:自定义列表显示更新238
6.6小结248
第7章基于SIP协议的VoIP应用249
7.1SIP协议简介249
7.2SIP服务器搭建250
7.2.1下载安装BrekekeSIPServer250
7.2.2访问服务器251
7.2.3启动服务器252
7.3SIP程序设置253
7.3.1Android SIPAPI中的类和接口253
7.3.2Android极限列表253
7.3.3完整的Manifest文件254
7.4SIP初始化通话255
7.4.1SipManager对象255
7.4.2SipProfile对象256
7.5监听SIP通话257
7.5.1创建监听器258
7.5.2拨打电话258
7.5.3接收呼叫259
7.6实战案例:SIP通话261
7.7小结270
第8章基于XMPP协议的即时通信应用271
8.1XMPP协议简介271
8.2使用Openfire搭建XMPP服务器272
8.3登录XMPP服务器276
8.3.1Asmack相关类276
8.3.2登录XMPP服务器277
8.4联系人相关操作279
8.4.1获取联系人列表279
8.4.2获取联系人状态280
8.4.3添加和删除联系人280
8.4.4监听联系人添加信息281
8.5消息处理282
8.5.1接收消息282
8.5.2发送消息283
8.6实战案例:XMPP多人聊天283
8.6.1创建新多人聊天室284
8.6.2加入聊天室286
8.6.3发送和接收消息287
8.7小结288
第三篇源码分析篇
第9章Android对HTML的处理290
9.1AndroidHTML处理关键类290
9.2HTMLViewer分析292
9.3浏览器源代码解析296
9.3.1WebView加载入口分析296
9.3.2调用JavaScript接口299
9.4WebKit简单分析300
9.4.1HTTPCache管理300
9.4.2Cookie管理301
9.4.3处理HTTP认证以及证书302
9.4.4处理JavaScript的请求302
9.4.5处理MIME类型305
9.4.6访问WebView的历史306
9.4.7保存网站图标306
9.4.8WebStorage306
9.4.9处理UI307
9.4.10Web设置分析309
9.4.11HTML5音视频处理309
9.4.12缩放和下载311
9.4.13插件管理311
9.5小结313
第10章Android网络处理分析314
10.1Android网络处理关键类及其说明314
10.2Android网络处理流程315
10.2.1监控网络连接状态315
10.2.2认证类316
10.2.3DHCP状态机317
10.2.4LocalServerSocket318
10.2.5响应邮件请求320
10.2.6提供网络信息323
10.2.7Proxy类324
10.2.8VPN服务325
10.3Android封装的HTTP处理类326
10.3.1AndroidHttpClient类和DefaultHttpClient类326
10.3.2SSL认证信息处理类327
10.3.3SSL错误信息处理328
10.3.4AndroidHttpClient328
10.4AndroidRTP协议329
10.4.1传输音频码330
10.4.2AudioGroup331
10.4.3语音流RtpStream和AudioStream332
10.5AndroidSIP协议333
10.5.1SIP通话简介334
10.5.2SIP初始化335
10.5.3SipProfile336
10.5.4SipSession337
10.5.5SIP包错误处理338
10.6小结339
第11章Android网络应用分析340
11.1Android中使用SAX解析XML340
11.1.1几种XML解析方式讨论340
11.1.2SAX解析XML的原理341
11.1.3SAX发现XML的根元素342
11.1.4SAX发现XML的子元素345
11.2基于位置的服务348
11.2.1位置服务的基本概念348
11.2.2位置服务的基本类348
11.2.3调用Google地图350
11.2.4根据位置刷新地图显示351
11.3媒体传输协议353
11.3.1MTP和PTP简介353
11.3.2定义MTP和PTP的类型354
11.3.3封装MTP设备信息357
11.3.4封装MTP对象的信息358
11.3.5封装MTP设备上存储单元的信息360
11.4小结362

亚马逊链接

基本信息

名称: Android开发权威指南(第2版)
作者信息: 作者: 李宁 [ 中文 pdf ]

简单介绍

第一本Android 4.X新版本的图书 所有案例来自于作者的真实项目,技术实用性强,案例含金量高

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
第1章 初识Android平台 1
1.1 Android简介 1
1.2 Android的制胜法宝 2
1.3 Android的版本发展历程 3
1.3.1 Android1.5(纸杯蛋糕) 3
1.3.2 Android1.6(甜甜圈) 4
1.3.3 Android2.1(松饼) 4
1.3.4 Android2.2(冻酸奶) 5
1.3.5 Android2.3(姜饼) 5
1.3.6 Android3.0(蜂巢) 6
1.3.7 Android4.0(冰激凌三明治) 6
1.3.8 Android4.¼.2(果冻豆) 7
1.4 Android的系统架构 8
1.5 小结 9
第2章 搭建Android开发和测试环境 10
2.1 搭建Android开发环境需要些什么 10
2.2 安装Java开发环境 10
2.2.1 安装JDK 11
2.2.2 安装和配置Eclipse 11
2.3 安装Android开发环境 12
2.3.1 下载和安装AndroidSDK 13
2.3.2 下载和安装AndroidNDK 13
2.3.3 安装和配置Eclipse插件:ADT 14
2.4 配置Android测试环境 15
2.4.1 建立Android虚拟设备(AVD) 15
2.4.2 启动Android模拟器 16
2.4.3 安装真机测试环境 17
2.5 小结 18
第3章 第一个Android应用程序 19
3.1 从第一个Android程序中可以学到什么 19
3.2 建立Android工程 19
3.3 Android工程的结构 21
3.4 在窗口上放两个按钮 22
3.5 编写窗口类 23
3.6 修改字符串资源 24
3.7 运行Android应用程序 25
3.8 调试Android应用程序 27
3.9 签名Android应用程序 27
3.10 小结 29
第4章 Android应用程序架构 30
4.1 Android应用程序中的资源 30
4.1.1 资源存放在哪里 30
4.1.2 资源的基本使用方法 30
4.2 Android的应用程序组件 32
4.2.1 窗口(Activity)组件 32
4.2.2 服务(Service)组件 32
4.2.3 广播接收者(Broadcastreceivers)组件 33
4.2.4 内容提供者(ContentProvider)组件 33
4.3 AndroidManifest.xml文件的结构 33
4.4 小结 34
第5章 窗口(Activity)与视图(View) 35
5.1 声明和使用Activity 35
5.1.1 Activity的基本用法 35
5.1.2 同时适合手机和平板电脑的窗口风格 38
5.2 Activity的生命周期 40
5.3 窗口的常用事件 43
5.3.1 设置窗口标题事件(onTitleChanged) 44
5.3.2 键盘按下和抬起事件(onKeyDown和onKeyUp) 45
5.3.3 任意情况下捕捉键盘事件(dispatchKeyEvent) 48
5.3.4 回退事件(onBackPressed) 49
5.3.5 按键长按事件(onKeyLongPress) 50
5.3.6 屏幕触摸事件(onTouchEvent) 50
5.3.7 窗口获得焦点事件(onWindowFocusChanged) 51
5.4 在不同Activity之间传递数据 52
5.4.1 使用Intent传递数据 53
5.4.2 使用静态变量传递数据 54
5.4.3 使用剪贴板传递数据 55
5.4.4 使用全局对象传递数据 57
5.5 从Activity返回数据 59
5.6 视图(View) 61
5.6.1 视图简介 61
5.6.2 使用XML布局文件定义视图 61
5.6.3 在代码中控制视图 62
5.7 显示系统窗口 64
5.7.1 直接拨号 65
5.7.2 将电话号传入拨号程序 65
5.7.3 调用拨号程序 65
5.7.4 浏览网页 65
5.7.5 查看联系人 66
5.7.6 显示系统设置界面(设置主界面、Wi—Fi设置界面) 66
5.7.7 启动处理音频的程序 66
5.7.8 回到Home窗口(相当于按Home键) 66
5.8 与Activity相关的技巧与特效 67
5.8.1 全屏显示(隐藏标题栏和状态栏) 67
5.8.2 定制窗口标题栏 71
5.8.3 为程序添加Splash 75
5.8.4 改变窗口大小、位置和透明度 76
5.8.5 按两次关闭窗口 79
5.8.6 关闭所有的窗口 79
5.8.7 窗口截屏 80
5.9 小结 82
第6章 Intent与IntentFilter 83
6.1 Android系统的信使:Intent 83
6.2 Intent对象 84
6.2.1 Intent对象可以封装和传递哪些信息 84
6.2.2 组件名(Componentname) 84
6.2.3 动作(Action) 85
6.2.4 种类(Category) 86
6.2.5 数据(Data) 87
6.2.6 附加数据(Extra) 88
6.2.7 标志(Flags) 89
6.3 显式和隐式访问窗口 89
6.4 跨应用程序访问窗口 90
6.5 Android系统的过滤机制大揭秘 96
6.5.1 过滤条件的设置 96
6.5.2 过滤器的筛选规则 97
6.5.3 示例:过滤机制应用演示 101
6.6 Android源代码与过滤器 104
6.6.1 系统内置程序有哪些窗口可以利用 104
6.6.2 显示计算器(Calculator) 105
6.6.3 用浏览器(Browser)显示网页 106
6.6.4 拨打电话(Phone)与授权 108
6.7 获取第三方程序中可调用的窗口 109
6.8 传递附加数据(Extra) 111
6.9 解析数据 113
6.10 小结 114
第7章 窗口(Activity)高级技术 115
7.1 ActivityXML属性详解 115
7.1.1 设置Activity的基本信息 115
7.1.2 屏幕方向切换(android:screenOrientation) 117
7.1.3 阻止Activity销毁和重建(android:configChanges) 119
7.1.4 允许Activity被实例化(android:enabled) 123
7.1.5 在最近应用列表中显示(android:excludeFromRecents) 124
7.1.6 允许其他程序访问当前窗口(android:exported) 124
7.1.7 硬件加速(android:hardwareAccelerated) 125
7.1.8 在多进程中创建窗口实例(android:multiprocess) 125
7.1.9 无法返回的Activity(android:noHistory) 125
7.1.10 指定要返回的窗口(android:parentActivityName) 126
7.1.11 使窗口受到权限的保护(android:permission) 126
7.1.12 改变窗口所在的进程(android:process) 127
7.1.13 不保存窗口的状态(android:stateNotNeeded) 129
7.1.14 窗口的主题(android:theme) 129
7.1.15 扩展窗口UI(android:uiOptions) 129
7.1.16 设置输入法显示模式(android:windowSoftInputMode) 130
7.2 深入探索Activity从创建到销毁的过程 130
7.2.1 任务(Task)与回退栈(BackStack) 131
7.2.2 保存窗口(Activity)状态 133
7.2.3 管理任务和回退栈 134
7.2.4 Activity的4种创建模式 135
7.2.5 用Java代码设置窗口创建模式 141
7.2.6 窗口的乾坤大挪移(affinity) 144
7.2.7 销毁不再使用的窗口 147
7.3 Activity的别名 149
7.4 小结 151
第8章 布局 152
8.1 Android的五大布局 152
8.1.1 框架布局(FrameLayout) 152
8.1.2 线性布局(LinearLayout) 154
8.1.3 相对布局(RelativeLayout) 158
8.1.4 表格布局(TableLayout) 159
8.1.5 绝对布局(AbsoluteLayout) 160
8.2 属性资源与Android命名空间 160
8.3 布局属性 162
8.4 布局高级技术 163
8.4.1 布局别名 163
8.4.2 重用布局 164
8.4.3 优化布局 166
8.4.4 动态装载布局 167
8.4.5 动态设置布局属性 169
8.4.6 从右到左布局(RTLLayout) 169
8.5 小结 170
第9章 菜单 171
9.1 菜单的基本用法 171
9.1.1 创建选项菜单(OptionsMenu) 171
9.1.2 关联Activity 173
9.1.3 响应菜单的单击动作 173
9.1.4 动态添加、修改和删除选项菜单 174
9.1.5 带复选框和选项按钮的子菜单 175
9.1.6 上下文菜单 176
9.1.7 菜单事件 177
9.1.8 从菜单资源中装载菜单 177
9.2 菜单特效 177
9.2.1 自定义菜单 178
9.2.2 模拟UCWeb菜单效果 180
9.3 小结 184
第10章 Android的资源详解(一) 185
10.1 创建资源 185
10.1.1 手工创建资源文件 185
10.1.2 用ADT模板创建本地化图标资源 186
10.1.3 用ADT模板创建XML文件资源 188
10.2 使用资源 188
10.2.1 生成资源类文件(R.java) 188
10.2.2 从XML文件中访问资源 190
10.2.3 使用Java代码访问资源 191
10.2.4 Java反射技术与枚举资源 192
10.3 字符串(String)资源 193
10.3.1 普通字符串 193
10.3.2 字符串数组 194
10.3.3 复数字符串 194
10.3.4 在字符串中使用引号 195
10.3.5 用占位符格式化字符串 195
10.3.6 用HTML标签格式化字符串资源 195
10.4 值(values)资源 196
10.4.1 整数(Integer)资源 196
10.4.2 尺寸(Dimension)资源 197
10.4.3 布尔(Boolean)资源 198
10.4.4 颜色(Color)资源 198
10.4.5 ID资源 199
10.4.6 整数数组(Integer—Array)资源 200
10.4.7 类型数组(Typed—Array)资源 200
10.5 菜单(menu)资源 200
10.6 图像(drawable)资源 203
10.6.1 普通图像资源 203
10.6.2 XML图像资源 204
10.6.3 Nine—Patch图像资源 204
10.6.4 XMLNine—Patch图像资源 205
10.6.5 图层(Layer)资源 205
10.6.6 图像状态(State)资源 206
10.6.7 图像级别(Level)资源 207
10.6.8 淡入淡出(Cross—fade)资源 208
10.6.9 嵌入(Inset)图像资源 210
10.6.10 剪切(Clip)图像资源 210
10.6.11 外形(Shape)资源 211
10.7 小结 212
第11章 Android的资源详解(二) 213
11.1 动画资源 213
11.1.1 属性(Property)动画 213
11.1.2 帧(Frame)动画 215
11.1.3 移动补间(TranslateTween)动画 217
11.1.4 循环向右移动的EditText与上下弹跳的球 218
11.1.5 缩放补间(ScaleTween)动画 220
11.1.6 跳动的心 221
11.1.7 旋转补间(RotateTween)动画 222
11.1.8 旋转的星系 222
11.1.9 透明度补间(AlphaTween)动画 223
11.1.10 投掷炸弹 224
11.1.11 震动渲染器(ShakeInterpolator) 226
11.1.12 自定义渲染器(Interpolator) 227
11.2 风格(Style)资源与主题(Theme) 229
11.3 小结 232
第12章 资源的本地化 233
12.1 建立本地化的资源目录 233
12.2 资源目录的命名规则 237
12.3 建立别名资源 237
12.3.1 图像别名资源 237
12.3.2 布局别名资源 238
12.3.3 字符串别名资源 238
12.3.4 其他简单值别名资源 238
12.4 资源目录的优先级 238
12.5屏幕适配 239
12.5.1 屏幕适配要考虑的因素 239
12.5.2 适配不同屏幕可以采用的规则 241
12.5.3 屏幕尺寸和屏幕密度 241
12.5.4 位置、尺寸和字体应使用屏幕密度单位 244
12.5.5 与屏幕适配有关的标识符 244
12.5.6 影响屏幕适配的重要因素:布局和图像 245
12.5.7 典型的屏幕适配案例 246
12.5.8 在GooglePlay上限制屏幕尺寸和屏幕密度 247
12.5.9 在Android模拟器上测试各种屏幕尺寸和密度 248
12.6 小结 248
第13章 Android的控件详解(一) 249
13.1 显示文本的控件(TextView) 249
13.1.1 显示富文本(URL、不同大小、字体、颜色的文本) 250
13.1.2 用标签在TextView控件上显示图像 252
13.1.3 单击链接弹出Activity 254
13.1.4 为指定文本添加背景 256
13.2 编辑文本的控件(EditText) 258
13.2.1 像QQ一样输入表情图像 259
13.2.2 在EditText中输入特定的字符 260
13.2.3 AutoCompleteTextView(自动完成输入内容的控件) 261
13.3 按钮(Button)和复选框(Checkbox)控件 263
13.3.1 Button(普通按钮控件) 263
13.3.2 图文混排的按钮 265
13.3.3 ImageButton(图像按钮控件) 266
13.3.4 RadioButton(选项按钮控件) 267
13.3.5 ToggleButton(开关状态按钮控件) 267
13.3.6 CheckBox(复选框控件) 268
13.4 图像控件(ImageView) 270
13.4.1 ImageView控件的基本用法 270
13.4.2 显示指定区域的图像 270
13.4.3 缩放和旋转图像 272
13.5 时间与日期控件 273
13.5.1 DatePicker(输入日期的控件) 273
13.5.2 TimePicker(输入时间的控件) 274
13.5.3 DatePicker、TimePicker与TextView同步显示日期和时间 274
13.5.4 AnalogClock和DigitalClock(显示时钟的控件) 275
13.6 小结 275
第14章 Android的控件详解(二) 276
14.1 进度条控件 276
14.1.1 ProgressBar(进度条控件) 276
14.1.2 SeekBar(拖动条控件) 278
14.1.3 设置ProgressBar和SeekBar的颜色及背景图 278
14.1.4 RatingBar(评分控件) 281
14.2 列表控件 282
14.2.1 ListView(普通列表控件) 282
14.2.2 为ListView列表项添加复选框和选项按钮 285
14.2.3 对列表项进行增、删、改操作 286
14.2.4 改变列表项的背景色 290
14.2.5 ListActivity(封装ListView的Activity) 290
14.2.6 ExpandableListView(可扩展的列表控件) 291
14.2.7 Spinner(下拉列表控件) 293
14.3 GridView(网格控件) 296
14.4 TabHost(标签控件) 298
14.5 ViewStub(惰性装载控件) 299
14.6 小结 300
第15章 可视化UI设计 301
15.1 拖放控件 301
15.2 设置视图属性 303
15.3 预览各种屏幕尺寸 303
15.4 语言和地区的本地化测试 304
15.5 其他可视化功能 304
15.6 小结 305
第16章 对话框、Toast与通知栏(Notification) 306
16.1 对话框 306
16.1.1 带2个按钮(确认/取消)的对话框 306
16.1.2 带3个按钮(覆盖/忽略/取消)的对话框 307
16.1.3 简单列表对话框 308
16.1.4 单选列表对话框 309
16.1.5 多选列表对话框 311
16.1.6 进度对话框 312
16.1.7 登录对话框 315
16.1.8 使用Activity托管对话框 316
16.2 Toast 318
16.3 通知(Notification) 319
16.3.1 在状态栏上显示通知信息 319
16.3.2 永久存在的Notification 322
16.3.3 自定义Notification 323
16.4 小结 324
第17章 封装UI和代码利器——Fragment 325
17.1 Fragment简介 325
17.2 什么时候使用Fragment 326
17.3 按照Fragment设计原则编写程序 328
17.4 Fragment的生命周期 332
17.5 创建Fragment 341
17.5.1 通过XML布局文件创建Fragment 341
17.5.2 通过Java代码创建Fragment 342
17.5.3 创建无UI的Fragment 344
17.5.4 在低版本Android中使用Fragment(SupportLibrary) 345
17.6 Activity与Fragment之间的交互 346
17.6.1 Fragment与Activity之间的交互 346
17.6.2 Fragment的回调机制 348
17.7 Fragment状态的持久化 351
17.8 Fragment与回退栈(导航) 355
17.9 FragmentManager与FragmentTransaction 357
17.9.1 管理Fragment事务 357
17.9.2 查找Fragment 357
17.9.3 跟踪回退栈状态 358
17.9.4 恢复历史状态 358
17.9.5 管理Fragment的状态 359
17.9.6 添加、删除和替换Fragment 359
17.9.7 分离(Detach)与附加(Attach)Fragment 360
17.9.8 显示和隐藏Fragment 361
17.10 Fragment扩展 361
17.10.1 ListFragment 361
17.10.2 DialogFragment 363
17.10.3 其他Fragment扩展类 366
17.11 Fragment模板源代码分析 366
17.12 小结 368
第18章 动作栏——ActionBar 369
18.1 ActionBar简介 369
18.2 ActionBar基础 370
18.2.1 隐藏/显示ActionBar 370
18.2.2 添加和响应Action按钮 372
18.3可上下两分的ActionBar 374
18.4 应用程序图标导航 376
18.5 收缩和展开ActionView 377
18.6 ActionProvider 380
18.6.1 分享信息(ShareActionProvider) 380
18.6.2 定制ActionProvider 382
18.7 导航标签 384
18.8 下拉导航列表 388
18.9 小结 390
第19章 Android的拖放技术 391
19.1 Android中的拖放操作 391
19.2 拖放状态与拖放处理 391
19.3 拖动阴影 392
19.4 示例:拖动复制图像 393
19.5 小结 395
第20章 数据存储解决方案 396
20.1 读写key—value对:SharedPreferences 396
20.2 文件流操作 397
20.2.1 openFileOutput和openFileInput方法 398
20.2.2 读写SD卡中的文件 399
20.3 读写JSON格式的数据 400
20.4 SQLite数据库 404
20.4.1 SQLite数据库管理工具 404
20.4.2 SQLiteOpenHelper类与自动升级数据库 405
20.4.3 数据绑定与SimpleCursorAdapter类 406
20.4.4 操作SD卡上的数据库 409
20.4.5 将数据库与应用程序一起发布 410
20.4.6 内存数据库 411
20.5 小结 412
第21章 内容提供者(ContentProvider) 413
21.1 ContentProvider的作用 413
21.2 获得系统数据 413
21.2.1 读取联系人信息 414
21.2.2 查看收件箱的短信 415
21.3 自定义ContentProvider 417
21.3.1 查询城市信息 417
21.3.2 为ContentProvider添加访问权限 422
21.4 如何查找系统提供的ContentProvider 423
21.5 小结 425
第22章 广播接收器(BroadcastReceiver) 426
22.1 什么是广播 426
22.2 接收系统广播 427
22.2.1 短信拦截 427
22.2.2 用代码注册广播接收器 429
22.2.3 广播接收器的优先级 429
22.2.4 来去电拦截 430
22.2.5 截获屏幕休眠与唤醒 432
22.2.6 开机自动运行 433
22.2.7 显示手机电池的当前电量 434
22.3 发送广播 434
22.4 小结 435
第23章 服务(Service) 436
23.1 Service基础 436
23.1.1 Service的生命周期 436
23.1.2 开机启动Service 438
23.2 跨进程访问(AIDL服务) 439
23.2.1 什么是AIDL服务 439
23.2.2 建立AIDL服务的步骤 439
23.2.3 创建和调用AIDL服务 440
23.2.4 传递复杂数据的AIDL服务 442
23.2.5 AIDL与来去电自动挂断 445
23.3 小结 447
第24章 Android的组件开发 448
24.1 Android支持哪些组件开发方式 448
24.2 引用jar文件 449
24.3 跨工程引用 450
24.4 引用NDKLibrary 451
24.5 动态引用APK文件 451
24.6 动静结合的组件 453
24.7 脚本类型组件(JavaScript)与WebView控件 453
24.8 如何确定动态组件是否安装 457
24.9 升级动态组件 459
24.10 小结 461
第25章 Android的蓝牙开发技术 462
25.1 蓝牙简介 462
25.2 打开和关闭蓝牙设备 462
25.3 搜索蓝牙设备 463
25.4 蓝牙数据传输 465
25.5 蓝牙通信一定需要UUID吗 467
25.6 小结 467
第26章 近距离天线通信——NFC技术 468
26.1 NFC简介 468
26.2 NFC、蓝牙和红外之间的差异 469
26.3 NFC技术的未来前景 470
26.4 Android中的NFC技术 471
26.4.1 NDEF与非NDEF数据 471
26.4.2 NFC的三重过滤机制 471
26.4.3 开启Android的NFC功能 472
26.4.4 编写NFC程序的基本步骤 473
26.5 测试NFC程序需要的设备 474
26.6 让Android手机自动运行程序 475
26.6.1 向NFC标签写入数据的基本步骤 475
26.6.2 向NFC标签写入启动Android应用程序的消息 476
26.7 让Android手机自动打开网页 483
26.8 读写NFC标签中的文本 485
26.8.1 实现读写文本数据应用的基本思路 485
26.8.2 如何将NFC标签变成NDEF文本格式 485
26.8.3 NDEF文本格式解析 486
26.8.4 实现读写文本数据的Android应用程序 490
26.9 读写NFC标签中的Uri 496
26.9.1 NDEFUri格式解析 496
26.9.2 实现读写Uri的Android应用程序 499
26.10 利用NFC标签支持的数据格式进行过滤 502
26.11 处理任意NFC标签 504
26.12 读写非NDEF格式的数据 505
26.13 AndroidBeam技术与数据交互 507
26.13.1 传递NDEF消息 507
26.13.2 传输文件 511
26.14 小结 513
第27章 Android的网络开发技术 514
27.1 提交HTTPGET和HTTPPOST请求 514
27.2 HttpURLConnection类 516
27.3 上传文件 517
27.4 下载管理(DownloadManager) 519
27.5 Wi—FiDirect 524
27.5.1 Wi—FiDirectAPI的核心部分 524
27.5.2 创建监听Wi—FiDirect动作的广播接收器 524
27.5.3 注册广播接收器 525
27.5.4 发现Wi—FiDirect设备 526
27.5.5 连接Wi—FiDirect设备 526
27.5.6 数据传输 527
27.6 Internet电话(SIP) 528
27.6.1 使用SIP的要求和限制 528
27.6.2 配置Android版SIP电话 528
27.6.3 创建SipManager 529
27.6.4 注册SIP服务器 529
27.6.5 开始打电话 530
27.6.6 接听电话 530
27.7 小结 531
第28章 并发与定时器 532
28.1 Handler 532
28.1.1 更新UI 532
28.1.2 延迟执行 535
28.2 定时器 537
28.2.1 单秒循环的定时器:Chronometer 537
28.2.2 任意时间间隔的定时器:Timer 538
28.2.3 全局定时器:AlarmManager 539
28.3 AsyncTask 541
28.4 小结 543
第29章 异步装载(Loader) 544
29.1 Loader简介 544
29.2 Loader的核心类/接口 544
29.3 如何使用Loader 545
29.3.1 创建/重用Loader 545
29.3.2 遗弃旧的数据 546
29.3.3 LoaderManager与方法回调 546
29.3.4 创建Loader对象(onCreateLoader) 547
29.3.5 完成数据装载(onLoadFinished) 547
29.3.6 Loader被重置(onLoaderReset) 548
29.4 异步装载联系人(CursorLoader的应用) 548
29.5 小结 552
第30章 Android推送技术 553
30.1 IOS的推送方案 553
30.2 WindowsPhone的推送方案 554
30.3 Android的推送方案 554
30.4 第三方推送服务:极光推送 556
30.5 自己搭建推送服务器:AndroidPN 557
30.6 小结 558
第31章 Android的多媒体开发技术 559
31.1 音频 559
31.1.1 音频播放 559
31.1.2 录制音频 561
31.2 视频 563
31.2.1 播放视频 563
31.2.2 录制视频 564
31.3 相机 565
31.3.1 调用系统的拍照功能 565
31.3.2 自定义拍照功能 566
31.4 铃声 570
31.5 小结 572
第32章 Android的2D绘图 573
32.1 绘制基本的图形 573
32.1.1 绘制像素点 573
32.1.2 绘制直线 574
32.1.3 绘制圆形 574
32.1.4 绘制圆弧 574
32.1.5 绘制文本 575
32.1.6 示例:绘制基本的图形和文本 575
32.2 绘制位图 578
32.2.1 绘制Bitmap对象 578
32.2.2 使用Drawable.draw方法绘制位图 579
32.2.3 示例:用两种方式绘制位图 579
32.3 设置图像的透明度 580
32.4 旋转图像 581
32.5 小结 583
第33章 3D绘图之OpenGLES 584
33.1 OpenGLES简介 584
33.2 在3D空间中绘图 585
33.2.1 要绘制3D图形了,第一步要做什么 585
33.2.2 定义顶点 587
33.2.3 绘制三角形 588
33.2.4 三角形合并法绘制矩形 590
33.2.5 顶点法绘制矩形 592
33.2.6 顶点的选取顺序 592
33.2.7 索引法绘制矩形 593
33.2.8 基于OpenGLES的动画原理 594
33.2.9 旋转的矩形 594
33.3 视图 595
33.3.1 有趣的比喻:照相机拍照 596
33.3.2 模型变换:立方体旋转 597
33.3.3 用gluLookAt方法变换视图 599
33.4 颜色 600
33.5 小结 602
第34章 Android的桌面上的“尤物” 603
34.1 窗口小部件(AppWidget) 603
34.1.1 在Android桌面上添加AppWidget 603
34.1.2 开发AppWidget的步骤 603
34.1.3 数字时钟 605
34.1.4 AppWidgetProvider类 607
34.1.5 向AppWidget添加配置窗口 608
34.1.6 可以选择风格的数字时钟 608
34.2 动态壁纸(随机变换的圆圈) 612
34.3 小结 618
第35章 Android中的短信(SMS)与彩信(MMS)开发技术 619
35.1 通过系统程序发短信 619
35.2 直接发送短信 619
35.3 保存短信发送记录 620
35.4 监听短信和彩信 621
35.5 显示视频缩略图 622
35.6 彩信内容与SMIL协议 624
35.7 小结 631
第36章 Android的传感器开发技术 632
36.1 如何使用传感器 632
36.2 加速度传感器(Accelerometer) 635
36.3 重力传感器(Gravity) 635
36.4 光线传感器(Light) 636
36.5 陀螺仪传感器(Gyroscope) 636
36.5 方向传感器(Orientation) 637
36.6 其他传感器 638
36.7 小结 638
第37章 Android的全球定位系统(GPS) 639
37.1 GPS的核心API 639
37.2 获取位置提供者(LocationProvider) 641
37.2.1 获取所有可用的LocationProvider 641
37.2.2 根据名称获取LocationProvider 642
37.2.3 根据条件(Criteria)获取LocationProvider 642
37.3 实时获取GPS定位数据 643
37.4 测量地球上任意两点之间的距离 645
37.5 邻近警告 646
37.6 小结 647
第38章 谷歌地图(GoogleMap)开发应用 648
38.1 GoogleMap的跨平台解决方案:MapsJavaScriptAPIv3 648
38.2 GoogleMap的显示与定位 648
38.3 在GoogleMap上插入图像标志 651
38.4 插入多个图像标志 653
38.5 带阴影的位置坐标信息 653
38.6 地图与Java交互 655
38.7 小结 657
第39章 Android中的人机交互设计 658
39.1 手势(Gesture) 658
39.1.1 创建手势文件 658
39.1.2 通过手势输入字符串 658
39.1.3 通过手势调用程序 660
39.1.4 编写自己的手势创建器 661
39.2 多点触摸与放大/缩小操作 662
39.3 语音识别 664
39.4 让手机说话(TTS) 665
39.5 小结 666
第40章 Android中的输入法开发 667
40.1 Android输入法简介 667
40.2 控制输入法 668
40.3 输入法实战 669
40.3.1 实现输入法的步骤 669
40.3.2 编写输入法程序 669
40.3.3 输入法服务的生命周期 672
40.3.4 预输入文本 672
40.3.5 输入法设置 673
40.4 小结 673
第41章 AndroidNDK开发 674
41.1 AndroidNDK简介 674
41.2 安装、配置和测试NDK开发环境 674
41.2.1 系统和软件要求 675
41.2.2 下载和安装AndroidNDK 675
41.2.3 下载和安装Cygwin 675
41.2.4 配置AndroidNDK的开发环境 677
41.3 利用NDKSamples学习NDK开发 678
41.3.1 编译NDKSamples 678
41.3.2 NDK程序的结构与命名规则 678
41.4 AndroidNDK配置文件详解 679
41.4.1 AndroidNDK定义的变量 680
41.4.2 AndroidNDK定义的函数 680
41.4.3 描述模块的变量 681
41.4.4 配置Application.mk文件 682
41.5 第一个NDK示例:字母的大小写转换 682
41.5.1 编写NDK程序 682
41.5.2 编写调用NDK函数的Java程序 684
41.5.3 在Eclipse中开发和编译NDK程序 684
41.6 NDK程序读取Java字段值 686
41.7 小结 687
第42章 Android的测试驱动开发(TDD) 688
42.1 JUnit测试框架 688
42.2 测试Activity 688
42.3 测试ContentProvider 691
42.4 测试Service 692
42.5 测试普通类 692
42.6 小结 693
第43章 Android应用的性能优化 694
43.1 性能优化的基础知识 694
43.2 编写Java程序的最优化原则 695
43.2.1 用静态工厂方法代替构造方法 695
43.2.2 避免创建重复的对象 695
43.2.3 防止内存泄漏 697
43.2.4 返回零长度的集合而不是null 697
43.2.5 通过接口引用对象 698
43.3 避免ANR 698
43.4 执行时间测试 699
43.5 内存消耗测试 700
43.6 测试性能的工具:traceview 701
43.7 小结 702
第44章 游戏项目实战:笑脸连连看 703
44.1 游戏玩法 703
44.2 准备图像素材 703
44.3 实现主界面 704
44.4 随机生成连连看图像 705
44.5 选中两个相同图像后消失 705
44.6 用定时器限制游戏时间 706
44.7 小结 707
第45章 开源项目实战:NFC侠(NFCMan) 708
45.1 什么是NFCMan 708
45.2 用Android模拟器和非NFC设备测试NFC应用 709
45.3 NFCMan的实现原理 711
45.4 实现服务端程序(NFCMan) 711
45.4.1 可视化SWT开发环境 712
45.4.2 创建NFC标签 712
45.4.3 描述虚拟NFC标签的NFCTag类 714
45.4.4 保证虚拟NFC标签的全局唯一 715
45.4.5 显示与保存虚拟NFC标签 716
45.4.6 装载已经存在的虚拟NFC标签 719
45.4.7 开启服务 720
45.4.8 处理客户端请求 721
45.4.9 保证虚拟Android设备全局唯一 723
45.4.10 描述虚拟Android设备 724
45.4.11 添加虚拟Android设备 725
45.4.12 异常处理机制 727
45.5 客户端与服务端之间的数据管道(NFCManService) 728
45.5.1 与NFCMan交互(Socket方式) 728
45.5.2 与ANFCMan交互(广播方式) 732
45.6 客户端Library(ANFCMan) 733
45.6.1 ANFCMan的数据结构和异常类 733
45.6.2 ANFCMan的入口类 734
45.6.3 模拟检测到NFC标签的广播接收器 734
45.6.4 同时处理物理NFC标签和虚拟NFC标签的窗口 735
45.7 测试ANFCMan(TestANFCMan) 738
45.8 小结 739

亚马逊链接

基本信息

名称: Android应用UI设计模式
作者信息: 作者: 纳德尔曼 (Greg Nudelman) [ 英文 pdf ]

简单介绍

58个重要交互设计模式将扁平化设计理念发挥到极致,Android应用设计难题各个击破集各家操作系统(iOS、Windows Phone)之所长,将其绝妙理念融入Android交互设计多个试验模式和反模式帮助探索Android设计的前沿部分,避开设计误区,打破设计僵局

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
第一部分 用户体验原则和Android特色
第1章 向Android迁移(案例)
1.1 启动图标
1.2 操作栏与信息架构
1.2.1 重新设计前
1.2.2 重新设计后
1.3 选项卡
1.4 专用选择页
1.5 选择控件
1.5.1 重新设计前
1.5.2 重新设计后
1.6 按钮
1.7 搜索结果屏幕
1.7.1 重新设计前
1.7.2 重新设计后
1.8 结果详情屏幕
1.8.1 重新设计前
1.8.2 重新设计后
1.9 最终结果
第2章 Android的特色
2.1 这里是平面国
2.2 轻按任何地方
2.3 适合各种设备
2.4 摆脱空间限制
2.5 大局着眼,小处着手
第3章 Android分散化
3.1 何谓分散化
3.2 花无百日红
3.3 Android设备类型
3.3.1 紧凑型手机
3.3.2 全尺寸移动手机
3.3.3 平板手机
3.3.4 小型平板
3.3.5 大型平板
3.4 为分散化而歌
第4章 移动设计流程
4.1 现场观察用户如何与移动设备交互
4.2 原型设计方法必须考虑尺寸因素
4.3 用户测试必须涵盖运动、声音和多点触控等方面
4.4 触控界面必须既简约又精巧
4.5 愉悦不可或缺
4.6 讲述完整的故事——为跨界而设计
4.7 移动设计案例研究
4.7.1 第1步:范围、概念和规划
4.7.2 第2步:设计研讨会
4.7.3 第3步:使用便利贴做RITE调查
4.7.4 第4步:视觉设计
第二部分 Android 设计模式与反模式
第5章 欢迎体验
5.1 最终用户许可协议(反模式)
5.1.1 出现的时间和场合
5.1.2 示例
5.1.3 为何要避免
5.1.4 其他考虑因素
5.2 联系障碍(反模式)
5.2.1 出现的时间和场合
5.2.2 示例
5.2.3 为何要避免
5.2.4 其他考虑因素
5.3 注册(反模式)
5.3.1 出现的时间和场合
5.3.2 示例
5.3.3 为何要避免
5.3.4 其他考虑因素
5.4 欢迎动画
5.4.1 工作原理
5.4.2 示例
5.4.3 使用的时机和场合
5.4.4 使用的原因
5.4.5 其他用途
5.4.6 Pet Shop应用
5.4.7 平板应用
5.5 使用说明
5.5.1 工作原理
5.5.2 示例
5.5.3 使用的时机和场合
5.5.4 使用的原因
5.5.5 其他用途
5.5.6 Pet Shop应用
5.5.7 平板应用
第6章 主屏幕
6.1 链接列表
6.1.1 工作原理
6.1.2 示例
6.1.3 使用的时机和场合
6.1.4 使用的原因
6.1.5 其他用途
6.1.6 Pet Shop应用
6.1.7 平板应用
6.2 仪表板
6.2.1 工作原理
6.2.2 示例
6.2.3 使用的时机和场合
6.2.4 使用的原因
6.2.5 Pet Shop应用
6.2.6 平板应用
6.3 更新
6.3.1 工作原理
6.3.2 示例
6.3.3 使用的时机和场合
6.3.4 使用的原因
6.3.5 其他用途
6.3.6 Pet Shop应用
6.3.7 平板应用
6.4 浏览
6.4.1 工作原理
6.4.2 示例
6.4.3 使用的时机和场合
6.4.4 使用的原因
6.4.5 其他用途
6.4.6 Pet Shop应用
6.4.7 平板应用
6.5 地图
6.5.1 工作原理
6.5.2 示例
6.5.3 使用的时机和场合
6.5.4 使用的原因
6.5.5 其他用途
6.5.6 Pet Shop应用
6.5.7 平板应用
6.6 历史记录
6.6.1 工作原理
6.6.2 示例
6.6.3 使用的时机和场合
6.6.4 使用的原因
6.6.5 其他用途
6.6.6 Pet Shop应用
6.6.7 平板应用
第7章 搜索
7.1 语音搜索
7.1.1 工作原理
7.1.2 示例
7.1.3 使用的时机和场合
7.1.4 使用的原因
7.1.5 其他用途
7.1.6 Pet Shop应用
7.1.7 平板应用
7.2 自动完成与自动建议
7.2.1 工作原理
7.2.2 示例
7.2.3 使用的时机和场合
7.2.4 使用的原因
7.2.5 其他用途
7.2.6 Pet Shop应用
7.2.7 平板应用
7.3 轻按优先
7.3.1 工作原理
7.3.2 示例
7.3.3 使用的时机和场合
7.3.4 使用的原因
7.3.5 其他用途
7.3.6 Pet Shop应用
7.3.7 平板应用
7.4 拖动刷新
7.4.1 工作原理
7.4.2 示例
7.4.3 使用的时机和场合
7.4.4 使用的原因
7.4.5 其他用途
7.4.6 Pet Shop应用
7.4.7 平板应用
7.5 从菜单搜索
7.5.1 工作原理
7.5.2 示例
7.5.3 使用的时机和场合
7.5.4 使用的原因
7.5.5 其他用途
7.5.6 Pet Shop应用
7.5.7 平板应用
7.6 从操作栏搜索
7.6.1 工作原理
7.6.2 示例
7.6.3 使用的时机和场合
7.6.4 使用的原因
7.6.5 其他用途
7.6.6 Pet Shop应用
7.6.7 平板应用
7.7 专用搜索
7.7.1 工作原理
7.7.2 示例
7.7.3 使用的时机和场合
7.7.4 使用的原因
7.7.5 其他用途
7.7.6 Pet Shop应用
7.7.7 平板应用
7.8 在内容页面中搜索
7.8.1 工作原理
7.8.2 示例
7.8.3 使用的时机和场合
7.8.4 使用的原因
7.8.5 其他用途
7.8.6 Pet Shop应用
7.8.7 平板应用
7.9 搜索与细化分离(反模式)
7.9.1 出现的时间和场合
7.9.2 示例
7.9.3 为何要避免
7.9.4 其他考虑因素
第8章 排序和筛选
8.1 残缺的细化(反模式)
8.1.1 出现的时机和场合
8.1.2 示例
8.1.3 为何要避免
8.2 细化页面
8.2.1 工作原理
8.2.2 示例
8.2.3 使用的时机和场合
8.2.4 使用的原因
8.2.5 其他用途
8.2.6 Pet Shop应用
8.2.7 平板应用
8.3 筛选带
8.3.1 工作原理
8.3.2 示例
8.3.3 使用的时机和场合
8.3.4 使用的原因
8.3.5 其他用途
8.3.6 Pet Shop应用
8.3.7 平板应用
8.4 并行架构
8.4.1 工作原理
8.4.2 示例
8.4.3 使用的时机和场合
8.4.4 使用的原因
8.4.5 其他用途
8.4.6 Pet Shop应用
8.4.7 平板应用
8.5 选项卡
8.5.1 工作原理
8.5.2 示例
8.5.3 使用的时机和场合
8.5.4 使用的原因
8.5.5 其他用途
8.5.6 Pet Shop应用
8.5.7 平板应用
第9章 避免无结果或无关结果
9.1 不指出系统状态(反模式)
9.1.1 出现的时机和场合
9.1.2 示例
9.1.3 为何要避免
9.1.4 其他考虑因素
9.2 低效界面(反模式)
9.2.1 出现的时机和场合
9.2.2 示例
9.2.3 其他考虑因素
9.3 无用控件(反模式)
9.3.1 出现的时机和场合
9.3.2 示例
9.3.3 为何要避免
9.4 你要找的是不是
9.4.1 工作原理
9.4.2 示例
9.4.3 使用的时机和场合
9.4.4 使用的原因
9.4.5 其他用途
9.4.6 Pet Shop应用
9.4.7 平板应用
9.5 部分匹配
9.5.1 工作原理
9.5.2 示例
9.5.3 使用的时机和场合
9.5.4 使用的原因
9.5.5 其他用途
9.5.6 Pet Shop应用
9.5.7 平板应用
9.6 本地结果
9.6.1 工作原理
9.6.2 示例
9.6.3 使用的时机和场合
9.6.4 使用的原因
9.6.5 其他用途
9.6.6 Pet Shop应用
9.6.7 平板应用
第10章 数据输入
10.1 滑块
10.1.1 工作原理
10.1.2 示例
10.1.3 使用的时机和场合
10.1.4 使用的原因
10.1.5 其他用途
10.1.6 Pet Shop应用
10.1.7 平板应用
10.2 步进器
10.2.1 工作原理
10.2.2 示例
10.2.3 使用的时机和场合
10.2.4 使用的原因
10.2.5 其他用途
10.2.6 Pet Shop应用
10.2.7 平板应用
10.3 可滚动的日历
10.3.1 工作原理
10.3.2 示例
10.3.3 使用的时机和场合
10.3.4 使用的原因
10.3.5 其他用途
10.3.6 Pet Shop应用
10.3.7 平板应用
10.4 日期与时间选择器
10.4.1 工作原理
10.4.2 示例
10.4.3 使用的时机和场合
10.4.4 使用的原因
10.4.5 其他用途
10.4.6 Pet Shop应用
10.4.7 平板应用
10.5 下拉列表
10.5.1 工作原理
10.5.2 示例
10.5.3 使用的时机和场合
10.5.4 使用的原因
10.5.5 其他用途
10.5.6 Pet Shop应用
10.5.7 平板应用
10.6 多选
10.6.1 工作原理
10.6.2 示例
10.6.3 使用的时机和场合
10.6.4 使用的原因
10.6.5 其他用途
10.6.6 Pet Shop应用
10.6.7 平板应用
10.7 自由文本输入与提取
10.7.1 工作原理
10.7.2 示例
10.7.3 使用的时机和场合
10.7.4 使用的原因
10.7.5 其他用途
10.7.6 Pet Shop应用
10.7.7 平板应用
10.8 带输入掩码的文本框
10.8.1 工作原理
10.8.2 示例
10.8.3 使用的时机和场合
10.8.4 使用的原因
10.8.5 其他用途
10.8.6 Pet Shop应用
10.8.7 平板应用
10.9 带原子实体的文本框
10.9.1 工作原理
10.9.2 示例
10.9.3 使用的时机和场合
10.9.4 使用的原因
10.9.5 其他用途
10.9.6 Pet Shop应用
10.9.7 平板应用
第11章 表单
11.1 内嵌式错误消息
11.1.1 工作原理
11.1.2 示例
11.1.3 使用的时机和场合
11.1.4 使用的原因
11.1.5 其他用途
11.1.6 Pet Shop应用
11.1.7 平板应用
11.2 提示框
11.2.1 工作原理
11.2.2 示例
11.2.3 使用的时机和场合
11.2.4 使用的原因
11.2.5 其他用途
11.2.6 Pet Shop应用
11.2.7 平板应用
11.3 弹出框
11.3.1 工作原理
11.3.2 示例
11.3.3 使用的时机和场合
11.3.4 使用的原因
11.3.5 其他用途
11.3.6 Pet Shop应用
11.3.7 平板应用
11.4 回调验证
11.4.1 工作原理
11.4.2 示例
11.4.3 使用的时机和场合
11.4.4 使用的原因
11.4.5 其他用途
11.4.6 Pet Shop应用
11.4.7 平板应用
11.5 取消∕确定
11.5.1 工作原理
11.5.2 示例
11.5.3 使用的时机和场合
11.5.4 使用的原因
11.5.5 其他用途
11.5.6 Pet Shop应用
11.5.7 平板应用
11.6 上方标签
11.6.1 工作原理
11.6.2 示例
11.6.3 使用的时机和场合
11.6.4 使用的原因
11.6.5 其他用途
11.6.6 Pet Shop应用
11.6.7 平板应用
11.7 从环境获取输入
11.7.1 工作原理
11.7.2 示例
11.7.3 使用的时机和场合
11.7.4 使用的原因
11.7.5 其他用途
11.7.6 Pet Shop应用
11.7.7 平板应用
11.8 输入加速
11.8.1 工作原理
11.8.2 示例
11.8.3 使用的时机和场合
11.8.4 使用的原因
11.8.5 其他用途
11.8.6 Pet Shop应用
11.8.7 平板应用
第12章 移动银行
12.1 登录加速器
12.1.1 工作原理
12.1.2 示例
12.1.3 使用的时机和场合
12.1.4 使用的原因
12.1.5 其他用途
12.1.6 Pet Shop应用
12.1.7 平板应用
12.2 专用选择页面
12.2.1 工作原理
12.2.2 示例
12.2.3 使用的时机和场合
12.2.4 使用的原因
12.2.5 其他用途
12.2.6 Pet Shop应用
12.2.7 平板应用
12.3 表单至上
12.3.1 工作原理
12.3.2 示例
12.3.3 使用的时机和场合
12.3.4 使用的原因
12.3.5 其他用途
12.3.6 Pet Shop应用
12.3.7 平板应用
12.4 专用页面向导
12.4.1 工作原理
12.4.2 示例
12.4.3 使用的时机和场合
12.4.4 使用的原因
12.4.5 其他用途
12.4.6 Pet Shop应用
12.4.7 平板应用
12.5 以表单结尾的向导
12.5.1 工作原理
12.5.2 示例
12.5.3 使用的时机和场合
12.5.4 使用的原因
12.5.5 其他用途
12.5.6 Pet Shop应用
12.5.7 平板应用
12.6 核对?确认
12.6.1 工作原理
12.6.2 示例
12.6.3 使用的时机和场合
12.6.4 使用的原因
12.6.5 其他用途
12.6.6 Pet Shop应用
12.6.7 平板应用
12.7 近场通信
12.7.1 工作原理
12.7.2 示例
12.7.3 使用的时机和场合
12.7.4 使用的原因
12.7.5 其他用途
12.7.6 Pet Shop应用
12.7.7 平板应用
第13章 导航
13.1 上窜下跳(反模式)
13.1.1 出现的时间和场合
13.1.2 示例
13.1.3 为何要避免
13.1.4 其他考虑因素
13.1.5 出现的时间和场合
13.2 多个推荐区域(反模式)
13.2.1 出现的时间和场合
13.2.2 示例
13.2.3 为何要避免
13.2.4 其他考虑因素
13.3 轮播
13.3.1 工作原理
13.3.2 示例
13.3.3 使用的时机和场合
13.3.4 使用的原因
13.3.5 其他用途
13.3.6 Pet Shop应用
13.3.7 平板应用
13.4 弹出式菜单
13.4.1 工作原理
13.4.2 示例
13.4.3 使用的时机和场合
13.4.4 使用的原因
13.4.5 其他用途
13.4.6 Pet Shop应用
13.4.7 平板应用
13.5 水印
13.5.1 工作原理
13.5.2 示例
13.5.3 使用的时机和场合
13.5.4 使用的原因
13.5.5 其他用途
13.5.6 Pet Shop应用
13.5.7 平板应用
13.6 瑞士军刀导航
13.6.1 工作原理
13.6.2 示例
13.6.3 使用的时机和场合
13.6.4 使用的原因
13.6.5 其他用途
13.6.6 Pet Shop应用
13.6.7 平板应用
13.7 集成
13.7.1 工作原理
13.7.2 示例
13.7.3 使用的时机和场合
13.7.4 使用的原因
13.7.5 其他用途
13.7.6 Pet Shop应用
13.7.7 平板应用
第14章 平板模式
14.1 片段
14.1.1 工作原理
14.1.2 示例
14.1.3 使用的时机和场合
14.1.4 使用的原因
14.1.5 其他用途
14.2 复合视图
14.2.1 工作原理
14.2.2 示例
14.2.3 使用的时机和场合
14.2.4 使用的原因
14.2.5 其他用途
14.3 侧面导航(试验模式)
14.3.1 工作原理
14.3.2 示例
14.3.3 使用的时机和场合
14.3.4 使用的原因
14.3.5 其他用途
14.4 将内容用作导航元素
14.4.1 工作原理
14.4.2 示例
14.4.3 使用的时机和场合
14.4.4 使用的原因
14.4.5 其他用途
14.5 二维更多类似
14.5.1 工作原理
14.5.2 示例
14.5.3 使用的时机和场合
14.5.4 使用的原因
14.5.5 其他用途
14.6 C形轻扫(试验模式)
14.6.1 工作原理
14.6.2 示例
14.6.3 使用的时机和场合
14.6.4 使用的原因
14.6.5 其他用途

亚马逊链接

基本信息

名称: C语言入门经典(第5版)
作者信息: 作者: I.) 霍尔顿 (Horton [ 英文 pdf ]

简单介绍

编程导师Ivor Horton经典巨作,长期位居C语言开发类零售榜首,第五版全新包装隆重上市,超高的性价比助你快速掌握C语言,提升您的编程技能;完善您的职业生涯

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
目    录
第1章 C语言编程 1
1.1 C语言 1
1.2 标准库 2
1.3 学习C 2
1.4 创建C程序 2
1.4.1 编辑 2
1.4.2 编译 3
1.4.3 链接 4
1.4.4 执行 4
1.5 创建第一个程序 5
1.6 编辑第一个程序 5
1.7 处理错误 6
1.8 剖析一个简单的程序 7
1.8.1 注释 7
1.8.2 预处理指令 8
1.8.3 定义main()函数 9
1.8.4 关键字 10
1.8.5 函数体 10
1.8.6 输出信息 11
1.8.7 参数 11
1.8.8 控制符 11
1.8.9 三字母序列 13
1.9 预处理器 14
1.10 用C语言开发程序 14
1.10.1 了解问题 14
1.10.2 详细设计 15
1.10.3 实施 15
1.10.4 测试 15
1.11 函数及模块化编程 16
1.12 常见错误 19
1.13 要点 19
1.14 小结 20
1.15 习题 20
第2章 编程初步 21
2.1 计算机的内存 21
2.2 什么是变量 23
2.3 存储整数的变量 24
2.3.1 变量的使用 28
2.3.2 变量的初始化 29
2.4 变量与内存 36
2.4.1 带符号的整数类型 36
2.4.2 无符号的整数类型 37
2.4.3 指定整数常量 37
2.5 使用浮点数 39
2.6 浮点数变量 41
2.6.1 使用浮点数完成除法运算 42
2.6.2 控制输出中的小数位数 43
2.6.3 控制输出的字段宽度 43
2.7 较复杂的表达式 44
2.8 定义命名常量 46
2.8.1 极限值 49
2.8.2 sizeof运算符 51
2.9 选择正确的类型 52
2.10 强制类型转换 55
2.10.1 自动转换类型 56
2.10.2 隐式类型转换的规则 56
2.10.3 赋值语句中的隐式类型转换 57
2.11 再谈数值数据类型 58
2.11.1 字符类型 58
2.11.2 字符的输入输出 59
2.11.3 枚举 62
2.11.4 存储布尔值的变量 64
2.12 赋值操作的op=形式 65
2.13 数学函数 66
2.14 设计一个程序 67
2.14.1 问题 68
2.14.2 分析 68
2.14.3 解决方案 70
2.15 小结 73
2.16 练习 74
第3章 条件判断 75
3.1 判断过程 75
3.1.1 算术比较 75
3.1.2 基本的if语句 76
3.1.3 扩展if语句:if-else 79
3.1.4 在if语句中使用代码块 82
3.1.5 嵌套的if语句 83
3.1.6 测试字符 85
3.1.7 逻辑运算符 88
3.1.8 条件运算符 91
3.1.9 运算符的优先级 94
3.2 多项选择问题 98
3.2.1 给多项选择使用else-if语句 98
3.2.2 switch语句 99
3.2.3 goto语句 107
3.3 按位运算符 108
3.3.1 按位运算符的op=用法 110
3.3.2 使用按位运算符 111
3.4 设计程序 114
3.4.1 问题 114
3.4.2 分析 114
3.4.3 解决方案 114
3.5 小结 118
3.6 练习 118
第4章 循环 119
4.1 循环 119
4.2 递增和递减运算符 120
4.3 for循环 120
4.4 for循环的一般语法 124
4.5 再谈递增和递减运算符 125
4.5.1 递增运算符 125
4.5.2 递增运算符的前置和后置形式 125
4.5.3 递减运算符 126
4.6 再论for循环 127
4.6.1 修改for循环变量 129
4.6.2 没有参数的for循环 129
4.6.3 循环内的break语句 130
4.6.4 使用for循环限制输入 132
4.6.5 生成伪随机整数 135
4.6.6 再谈循环控制选项 137
4.6.7 浮点类型的循环控制变量 137
4.7 while循环 138
4.8 嵌套循环 140
4.9 嵌套循环和goto语句 146
4.10 do-while循环 147
4.11 continue语句 149
4.12 设计程序 150
4.12.1 问题 150
4.12.2 分析 150
4.12.3 解决方案 151
4.13 小结 162
4.14 习题 163
第5章 数组 165
5.1 数组简介 165
5.1.1 不用数组的程序 165
5.1.2 什么是数组 167
5.1.3 使用数组 168
5.2 寻址运算符 171
5.3 数组和地址 173
5.4 数组的初始化 174
5.5 确定数组的大小 175
5.6 多维数组 176
5.7 多维数组的初始化 178
5.8 变长数组 184
5.9 设计一个程序 186
5.9.1 问题 186
5.9.2 分析 186
5.9.3 解决方案 187
5.10 小结 193
5.11 习题 193
第6章 字符串和文本的应用 195
6.1 什么是字符串 195
6.2 存储字符串的变量 197
6.3 字符串操作 202
6.3.1 检查对C11的支持 202
6.3.2 确定字符串的长度 203
6.3.3 复制字符串 204
6.3.4 连接字符串 204
6.3.5 比较字符串 208
6.3.6 搜索字符串 211
6.3.7 单元化字符串 215
6.3.8 将换行符读入字符串 219
6.4 分析和转换字符串 221
6.4.1 转换字符的大小写形式 223
6.4.2 将字符串转换成数值 225
6.5 设计一个程序 227
6.5.1 问题 227
6.5.2 分析 227
6.5.3 解决方案 228
6.6 小结 233
6.7 习题 233
第7章 指针 235
7.1 指针初探 235
7.1.1 声明指针 236
7.1.2 通过指针访问值 237
7.1.3 使用指针 240
7.1.4 指向常量的指针 244
7.1.5 常量指针 244
7.1.6 指针的命名 245
7.2 数组和指针 245
7.3 多维数组 248
7.3.1 多维数组和指针 252
7.3.2 访问数组元素 253
7.4 内存的使用 256
7.4.1 动态内存分配:malloc()函数 256
7.4.2 释放动态分配的内存 257
7.4.3 用calloc()函数分配内存 261
7.4.4 扩展动态分配的内存 262
7.5 使用指针处理字符串 265
7.5.1 使用指针数组 266
7.5.2 指针和数组记号 272
7.6 设计程序 276
7.6.1 问题 276
7.6.2 分析 277
7.6.3 解决方案 277
7.7 小结 284
7.8 习题 285
第8章 编程的结构 287
8.1 程序的结构 287
8.1.1 变量的作用域和生存期 288
8.1.2 变量的作用域和函数 291
8.2 函数 291
8.2.1 定义函数 291
8.2.2 return语句 294
8.3 按值传递机制 299
8.4 函数原型 300
8.5 指针用作参数和返回值 301
8.5.1 常量参数 302
8.5.2 返回指针的风险 307
8.6 小结 310
8.7 习题 310
第9章 函数再探 313
9.1 函数指针 313
9.1.1 声明函数指针 313
9.1.2 通过函数指针调用函数 314
9.1.3 函数指针的数组 316
9.1.4 作为变元的函数指针 319
9.2 函数中的变量 321
9.2.1 静态变量:函数内部的追踪 321
9.2.2 在函数之间共享变量 323
9.3 调用自己的函数:递归 325
9.4 变元个数可变的函数 328
9.4.1 复制va_list 331
9.4.2 长度可变的变元列表的基本规则 331
9.5 main()函数 332
9.6 结束程序 333
9.6.1 abort()函数 333
9.6.2 exit()和atexit()函数 333
9.6.3 Exit()函数 334 9.6.4 quick_exit()和at_quick_exit()函数 334 9.7 提高性能 335 9.7.1 内联声明函数 335 9.7.2 使用restrict关键字 335 9.7.3 Noreturn函数限定符 336
9.8 设计程序 336
9.8.1 问题 336
9.8.2 分析 337
9.8.3 解决方案 338
9.9 小结 351
9.10 习题 352
第10章 基本输入和输出操作 353
10.1 输入和输出流 353
10.2 标准流 354
10.3 键盘输入 354
10.3.1 格式化键盘输入 355
10.3.2 输入格式控制字符串 355
10.3.3 输入格式字符串中的字符 360
10.3.4 输入浮点数的各种变化 362
10.3.5 读取十六进制和八进制值 363
10.3.6 用scanf_s()读取字符 364
10.3.7 从键盘上输入字符串 366
10.3.8 单个字符的键盘输入 367
10.4 屏幕输出 372
10.4.1 使用printf_s()的格式化输出 372
10.4.2 转义序列 375
10.4.3 整数输出 375
10.4.4 输出浮点数 378
10.4.5 字符输出 379
10.5 其他输出函数 380
10.5.1 屏幕的非格式化输出 381
10.5.2 数组的格式化输出 381
10.5.3 数组的格式化输入 382
10.6 小结 382
10.7 习题 383
第11章 结构化数据 385
11.1 数据结构:使用struct 385
11.1.1 定义结构类型和结构变量 387
11.1.2 访问结构成员 388
11.1.3 未命名的结构 390
11.1.4 结构数组 391
11.1.5 表达式中的结构成员 393
11.1.6 结构指针 393
11.1.7 为结构动态分配内存 394
11.2 再探结构成员 397
11.2.1 将一个结构作为另一个结构的成员 397
11.2.2 声明结构中的结构 398
11.2.3 将结构指针用作结构成员 399
11.2.4 双向链表 403
11.2.5 结构中的位字段 406
11.3 结构与函数 407
11.3.1 结构作为函数的变元 407
11.3.2 结构指针作为函数变元 408
11.3.3 作为函数返回值的结构 409
11.3.4 二叉树 414
11.4 共享内存 421
11.5 设计程序 425
11.5.1 问题 425
11.5.2 分析 426
11.5.3 解决方案 426
11.6 小结 438
11.7 习题 438
第12章 处理文件 441
12.1 文件的概念 441
12.1.1 文件中的位置 442
12.1.2 文件流 442
12.2 文件访问 442
12.2.1 打开文件 443
12.2.2 缓存文件操作 445
12.2.3 文件重命名 446
12.2.4 关闭文件 447
12.2.5 删除文件 447
12.3 写入文本文件 448
12.4 读取文本文件 449
12.5 在文本文件中读写字符串 452
12.6 格式化文件的输入输出 456
12.6.1 格式化文件输出 456
12.6.2 格式化文件输入 457
12.7 错误处理 459
12.8 再探文本文件操作模式 460
12.9 freopen_s()函数 461
12.10 二进制文件的输入输出 462
12.10.1 以二进制模式打开文件 462
12.10.2 写入二进制文件 463
12.10.3 读取二进制文件 464
12.11 在文件中移动 469
12.11.1 文件定位操作 469
12.11.2 找出我们在文件中的位置 470
12.11.3 在文件中设定位置 471
12.12 使用临时文件 477
12.12.1 创建临时文件 477
12.12.2 创建唯一的文件名 478
12.13 更新二进制文件 479
12.13.1 修改文件的内容 484
12.13.2 从键盘输入创建记录 485
12.13.3 将记录写入文件 486
12.13.4 从文件中读取记录 486
12.13.5 写入文件 487
12.13.6 列出文件内容 488
12.13.7 更新已有的文件内容 489
12.14 文件打开模式小结 495
12.15 设计程序 496
12.15.1 问题 496
12.15.2 分析 496
12.15.3 解决方案 496
12.16 小结 501
12.17 习题 501
第13章 支持功能 503
13.1 预处理 503
13.1.1 在程序中包含头文件 503
13.1.2 定义自己的头文件 504
13.1.3 管理多个源文件 504
13.1.4 外部变量 505
13.1.5 静态函数 505
13.1.6 替换程序源代码 506
13.2 宏 507
13.2.1 看起来像函数的宏 507
13.2.2 字符串作为宏参数 509
13.2.3 在宏展开式中结合两个变元 510
13.3 多行上的预处理器指令 510
13.3.1 预处理器逻辑指令 511
13.3.2 条件编译 511
13.3.3 测试多个条件 512
13.3.4 取消定义的标识符 512
13.3.5 测试标识符的指定值的指令 512
13.3.6 多项选择 513
13.3.7 标准预处理宏 514
13.4 调试方法 515
13.4.1 集成的调试器 515
13.4.2 调试阶段的预处理器 515
13.4.3 断言 519
13.5 日期和时间函数 521
13.5.1 获取时间值 522
13.5.2 获取日期 525
13.5.3 确定某一天是星期几 529
13.6 小结 531
13.7 习题 531
第14章 高级专用主题 533
14.1 使用国际字符集 533
14.1.1 理解Unicode 533
14.1.2 设置区域 534
14.1.3 宽字符类型wchar_t 535
14.1.4 宽字符串的操作 537
14.1.5 宽字符的文件流操作 540
14.1.6 存储Unicode字符的固定大小类型 541
14.2 用于可移植性的专用整数类型 545
14.2.1 固定宽度的整型 545
14.2.2 最小宽度的整型 545
14.2.3 最大宽度的整型 546
14.3 复数类型 546
14.3.1 复数基础 546
14.3.2 复数类型和操作 547
14.4 用线程编程 550
14.4.1 创建线程 550
14.4.2 退出线程 551
14.4.3 把一个线程连接到另一个线程上 552
14.4.4 挂起线程 555
14.4.5 管理线程对数据的访问 555
14.5 小结 561
附录A 计算机中的数学知识 563
附录B ASCII字符代码定义 571
附录C C语言中的保留字 575
附录D 输入输出格式说明符 577
附录E 标准库头文件 583

亚马逊链接

基本信息

名称: 学习使用C指针(英文本)
作者信息: 作者: 雷斯 (Richard Reese) [ 英文 pdf ]

简单介绍

通过对C指针和内存管理的扎实理解来提高你的编程技能。在《学习使用C指针》这本贴合实际的书籍里,你将了解到指针是如何提供了相应的机制来动态操纵内存,增强对数据结构的支持,允许直接访问硬件。作者Richard Reese(雷斯)通过本书中的内存模型为你展示了如何在数组、字符串、结构和函数中使用指针。 虽然难以掌握,但是指针为C语言提供了灵活性和强大能力,不过很少有资料来讲述这种数据类型。无论你是初学者还是有经验的C或者C++编程人员和开发者,这本详尽的书籍都有着你所需要的知识。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Preface
1.Introduction
Pointers and Memory
Why You Should Become Proficient with Pointers
Declaring Pointers
How to Read a Declaration
Address of Operator
Displaying Pointer Values
Dereferencing a Pointer Using the Indirection Operator
Pointers to Functions
The Concept of Null
Pointer Size and Types
Memory Models
Predefined Pointer—Related Types
Pointer Operators
Pointer Arithmetic
Comparing Pointers
Common Uses of Pointers
Multiple Levels of Indirection
Constants and Pointers
Summary
2.Dynamic Memory Management in C
Dynamic Memory Allocation
Memory Leaks
Dynamic Memory Allocation Functions
Using the malloc Function
Using the calloc Function
Using the realloc Function
The alloca Function and Variable Length Arrays
Deallocating Memory Using the free Function
Assigning NULL to a Freed Pointer
Double Free
The Heap and System Memory
Freeing Memory upon Program Termination
Dangling Pointers
Dangling Pointer Examples
Dealing with Dangling Pointers
Debug Version Support for Detecting Memory Leaks
Dynamic Memory Allocation Technologies
Garbage Collection in C
Resource Acquisition Is Initialization
Using Exception Handlers
Summary
3.Pointers and Functions
Program Stack and Heap
Program Stack
Organization of a Stack Frame
Passing and Returning by Pointer
Passing Data Using a Pointer
Passing Data by Value
Passing a Pointer to a Constant
Returning a Pointer
Pointers to Local Data
Passing Null Pointers
Passing a Pointer to a Pointer
Function Pointers
Declaring Function Pointers
Using a Function Pointer
Passing Function Pointers
Returning Function Pointers
Using an Array of Function Pointers
Comparing Function Pointers
Casting Function Pointers
Summary
4.Pointers and Arrays
Quick Review of Arrays
One—Dimensional Arrays
Two—Dimensional Arrays
Multidimensional Arrays
Pointer Notation and Arrays
Differences Between Arrays and Pointers
Using malloc to Create a One—Dimensional Array
Using the realloc Function to Resize an Array
Passing a One—Dimensional Array
Using Array Notation
Using Pointer Notation
Using a One—Dimensional Array of Pointers
Pointers and Multidimensional Arrays
Passing a Multidimensional Array
Dynamically Allocating a Two—Dimensional Array
Allocating Potentially Noncontiguous Memory
Allocating Contiguous Memory
Jagged Arrays and Pointers
Summary
5.Pointers and Strings
String Fundamentals
String Declaration
The String Literal Pool
String Initialization
Standard String Operations
Comparing Strings
Copying Strings
Concatenating Strings
Passing Strings
Passing a Simple String
Passing a Pointer to a Constant char
Passing a String to Be Initialized
Passing Arguments to an Application
Returning Strings
Returning the Address of a Literal
Returning the Address of Dynamically Allocated Memory
Function Pointers and Strings
Summary
6.Pointers and Structures
Introduction
How Memory Is Allocated for a Structure
Structure Deallocation Issues
Avoiding malloc/free Overhead
Using Pointers to Support Data Structures
Single—Linked List
Using Pointers to Support a Queue
Using Pointers to Support a Stack
Using Pointers to Support a Tree
Summary
7.Security Issues and the Improper Use of Pointers
Pointer Declaration and Initialization
Improper Pointer Declaration
Failure to Initialize a Pointer Before It Is Used
Dealing with Uninitialized Pointers
Pointer Usage Issues
Test for NULL
Misuse of the Dereference Operator
Dangling Pointers
Accessing Memory Outside the Bounds of an Array
Calculating the Array Size Incorrectly
Misusing the sizeof Operator
Always Match Pointer Types
Bounded Pointers
String Security Issues
Pointer Arithmetic and Structures
Function Pointer Issues
Memory Deallocation Issues
Double Free
Clearing Sensitive Data
Using Static Analysis Tools
Summary
8.Odds and Ends
Casting Pointers
Accessing a Special Purpose Address
Accessing a Port
Accessing Memory using DMA
Determining the Endianness of a Machine
Aliasing, Strict Aliasing, and the restrict Keyword
Using a Union to Represent a Value in Multiple Ways
Strict Aliasing
Using the restrict Keyword
Threads and Pointers
Sharing Pointers Between Threads
Using Function Pointers to Support Callbacks
Object—Oriented Techniques
Creating and Using an Opaque Pointer
Polymorphism in C
Summary
Index

亚马逊链接

基本信息

名称: 移动开发经典丛书 Android C++高级编程 使用NDK
作者信息: 作者: Onur Cinar [ 英文 pdf ]

简单介绍

Android是移动电话市场的主要角色而且其市场份额正在持续增长。它是第一个完整的、开放的、免费的移动平台,该平台给移动应用开发者提供了无限的机会。 《Android C++高级编程–使用NDK》(作者:辛纳)介绍了原生应用开发、可用的原生API以及故障排除技术的详细叙述,包括用按步骤的指导和屏幕截图以帮助Android开发人员迅速达到开发原生应用的目的。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
第1章  Android平台上的C++入门
第2章 深入了解Android NDK
第3章 用JNI实现与原生代码通信
第4章 使用SWIG自动生成JNI代码
第5章 日志、调试及故障处理
第6章 Bionic API入门
第7章 原生线程
第8章 POSIX Socket API:面向连接的通信
第9章 POSIX Socket API:无连接的通信
第10章 POSIX Socket API:本地通信
第11章 支持C++
第12章 原生图形AP
第13章 原生音频API
第14章 程序概要分析和NEON优化

亚马逊链接

基本信息

名称: 嗨翻C语言(英文)
作者信息: 作者: David Griffiths [ 英文 pdf ]

简单介绍

Ever wished you could learn C from a book? Head First C provides a complete learning experience for C and structured imperative programming. With a unique method that goes beyond syntax and how-to manuals, this guide not only teaches you the language, it helps you understand how to be a great programmer. You’ll learn key areas such as language basics, pointers and pointer arithmetic, and dynamic memory management. Advanced topics include multi-threading and network programming - topics typically covered on a college-level course. This book also features labs: in-depth projects intended to stretch your abilities, test your new skills, and build confidence. Head First C mimics the style of college-level C courses, making it ideal as an accessible textbook for students. We think your time is too valuable to waste struggling with new concepts. Using the latest research in cognitive science and learning theory to craft a multi-sensory learning experience, Head First C uses a visually rich format designed for the way your brain works, not a text-heavy approach that puts you to sleep.

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
Head First C
Dedication
Advance Praise for Head First C
Praise for other Head First books
Authors of Head First C
How to use this Book: Intro
Who is this book for?
We know what you’re thinking
We know what your brain is thinking
Metacognition: thinking about thinking
Here’s what WE did
Here’s what YOU can do to bend your brain into submission
Read me
The technical review team
Acknowledgments
Safari® Books Online
1. Getting Started with C: Diving in
C is a language for small, fast programs
But what does a complete C program look like?
But how do you run the program?
Two types of command
Here’s the code so far
Card counting? In C?
There’s more to booleans than equals…
What’s the code like now?
Pulling the ol’ switcheroo
Sometimes once is not enough…
Loops often follow the same structure…
You use break to break out…
Your C Toolbox
2. Memory and Pointers: What are you pointing at?
C code includes pointers
Digging into memory
Set sail with pointers
Set sail sou’east, Cap’n
Try passing a pointer to the variable
Using memory pointers
How do you pass a string to a function?
Array variables are like pointers…
What the computer thinks when it runs your code
But array variables aren’t quite pointers
Why arrays really start at 0
Why pointers have types
Using pointers for data entry
Be careful with scanf()
fgets() is an alternative to scanf()
Anyone for three-card monte?
Oops…there’s a memory problem…
String literals can never be updated
If you’re going to change a string, make a copy
Memory memorizer
Your C Toolbox
2.5. Strings: String theory
Desperately seeking Susan Frank
Create an array of arrays
Find strings containing the search text
Using the strstr() function
It’s time for a code review
Array of arrays vs. array of pointers
Your C Toolbox
View Sample
3. Creating Small Tools: Do one thing and do it well
View Sample
Small tools can solve big problems
View Sample
Here’s how the program should work
View Sample
But you’re not using files…
View Sample
You can use redirection
View Sample
You can redirect the Standard Input with <…
View Sample
…and redirect the Standard Output with >
View Sample
But there’s a problem with some of the data…
View Sample
Introducing the Standard Error
View Sample
By default, the Standard Error is sent to the display
View Sample
fprintf() prints to a data stream
View Sample
Let’s update the code to use fprintf()
View Sample
Small tools are flexible
View Sample
Don’t change the geo2json tool
View Sample
A different task needs a different tool
View Sample
Connect your input and output with a pipe
View Sample
The bermuda tool
View Sample
But what if you want to output to more than one file?
View Sample
Roll your own data streams
View Sample
There’s more to main()
View Sample
Overheard at the Head First Pizzeria
View Sample
Let the library do the work for you
View Sample
Your C Toolbox
4. Using Multiple Source Files: Break it down, build it up
Don’t put something big into something small
Use casting to put floats into whole numbers
Oh no…it’s the out-of-work actors…
Let’s see what’s happened to the code
Compilers don’t like surprises
Split the declaration from the definition
Creating your first header file
If you have common features…
You can split the code into separate files
Compilation behind the scenes
The shared code needs its own header file
It’s not rocket science…or is it?
Don’t recompile every file
First, compile the source into object files
It’s hard to keep track of the files
Automate your builds with the make tool
How make works
Tell make about your code with a makefile
Your C Toolbox
C Lab 1: Arduino
5. Structs, Unions, and Bitfields: Roll your own structures
Sometimes you need to hand around a lot of data
Cubicle conversation
Create your own structured data types with a struct
Just give them the fish
Read a struct’s fields with the “.” operator
Can you put one struct inside another?
How do you update a struct?
The code is cloning the turtle
You need a pointer to the struct
(t).age vs. t.age
Sometimes the same type of thing needs different types of data
A union lets you reuse memory space
How do you use a union?
An enum variable stores a symbol
Sometimes you want control at the bit level
Bitfields store a custom number of bits
Your C Toolbox
6. Data Structures and Dynamic Memory: Building bridges
Do you need flexible storage?
Linked lists are like chains of data
Linked lists allow inserts
Create a recursive structure
Create islands in C…
Inserting values into the list
Use the heap for dynamic storage
Give the memory back when you’re done
Ask for memory with malloc()…
Oh, no! It’s the out-of-work actors…
Let’s fix the code using the strdup() function
Free the memory when you’re done
Exhibit A: the source code
An overview of the SPIES system
Software forensics: using valgrind
Use valgrind repeatedly to gather more evidence
Look at the evidence
The fix on trial
Your C Toolbox
7. Advanced Functions: Turn your functions up to 11
Looking for Mr. Right…
Pass code to a function
You need to tell find() the name of a function
Every function name is a pointer to the function…
…but there’s no function data type
How to create function pointers
Get it sorted with the C Standard Library
Use function pointers to set the order
Automating the Dear John letters
Create an array of function pointers
Make your functions streeeeeetchy
Your C Toolbox
8. Static and Dynamic Libraries: Hot-swappable code
Code you can take to the bank
Angle brackets are for standard headers
But what if you want to share code?
Sharing .h header files
Share .o object files by using the full pathname
An archive contains .o files
Create an archive with the ar command…
Finally, compile your other programs
The Head First Gym is going global
Calculating calories
But things are a bit more complex…
Programs are made out of lots of pieces…
Dynamic linking happens at runtime
Can you link .a at runtime?
First, create an object file
What you call your dynamic library depends on your platform
Your C Toolbox
C Lab 2: OpenCV
9. Processes and System Calls: Breaking boundaries
System calls are your hotline to the OS
Then someone busted into the system…
Security’s not the only problem
The exec() functions give you more control
There are many exec() functions
The array functions: execv(), execvp(), execve()
Passing environment variables
Most system calls go wrong in the same way
Read the news with RSS
exec() is the end of the line for your program
Running a child process with fork() + exec()
Your C Toolbox
10. Interprocess Communication: It’s good to talk
Redirecting input and output
A look inside a typical process
Redirection just replaces data streams
fileno() tells you the descriptor
Sometimes you need to wait…
Stay in touch with your child
Connect your processes with pipes
Case study: opening stories in a browser
In the child
In the parent
Opening a web page in a browser
The death of a process
Catching signals and running your own code
sigactions are registered with sigaction()
Rewriting the code to use a signal handler
Use kill to send signals
Sending your code a wake-up call
Your C Toolbox
11. Sockets and Networking: There’s no place like 127.0.0.1
The Internet knock-knock server
Knock-knock server overview
BLAB: how servers talk to the Internet
A socket’s not your typical data stream
Sometimes the server doesn’t start properly
Why your mom always told you to check for errors
Reading from the client
The server can only talk to one person at a time
You can fork() a process for each client
Writing a web client
Clients are in charge
Create a socket for an IP address
getaddrinfo() gets addresses for domains
Your C Toolbox
12. Threads: It’s a parallel world
Tasks are sequential…or not…
…and processes are not always the answer
Simple processes do one thing at a time
Employ extra staff: use threads
How do you create threads?
Create threads with pthread_create
The code is not thread-safe
You need to add traffic signals
Use a mutex as a traffic signal
Your C Toolbox
C Lab 3: Blasteroids
A. Leftovers: The top ten things (we didn’t cover)
1. Operators
2. Preprocessor directives
3. The static keyword
4. How big stuff is
5. Automated testing
6. More on gcc
7. More on make
8. Development tools
9. Creating GUIs
10. Reference material
B. C Topics: Revision roundup
Basics
Pointers and memory
Strings
Data streams
Data types
Multiple files
Structs
Unions and bitfields
Data structures
Dynamic memory
Advanced functions
Static and dynamic libraries
Processes and communication
Sockets and networking
Threads
Index
About the Authors
Copyright

亚马逊链接

基本信息

名称: 精通Android
作者信息: 作者: 克曼特内尼 [ 英文 pdf ]

简单介绍

Android是谷歌的开源移动开发平台。业已成为移动开发领域的主流。近几年。随着越来越多硬件供应商加入Andrroid操作系统的阵营,谷歌已经成为移动领域的新霸主。
克曼特内尼、麦克莱恩编著的《精通Android》是权威智慧的结晶,是备受推崇的Android参考书。作为Android 4.0 SDK(Android的第一个SDK)的编程指南。相较于上一版,本书不仅在结构上做了相应的调整,内容上更是与时俱进。增加了Android内部构件编程的相关知识。介绍了线程、进程、长期运行的服务、广播接收程序、闹钟管理器、设备配置变化和异步任务。用31章涵盖了100多个主题,原书配套网站www.androidbook.com上更是展示TAndroid SDK的最新特性。
本书强调实用,突出趣味,寓教于乐。作者通过妙趣横生、切实可行的示例。向读者展示了如何使用谷歌最新的Android 4.0 SDK。为嵌入式设备、手机、平板电脑构建应用。如果你想投身Android移动开发,那么本书不容错过。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
第1章Android计算平台简介
1.1面向新PC的全新平台
1.2 Android的历史
1.3 Dalvik VM剖析
1.4理解Android软件栈
1.5使用Android SDK开发最终用户应用程序
1.5.1 Android模拟器
1.5.2 Android UI
1.5.3 Android基础组件
1.5.4高级UI概念
1.5.5 Android Service组件
1.5.6 Android媒体和电话组件
1.5.7 Android Java包
1.6利用Android源代码
1.6.1 在线浏览Android源代码
1.6.2使用Git下载Android源代码
1.7本书的示例项目
1.8小结
第2章设置开发环境
2.1设置环境
2.1.1 下载JDK 6
2.1.2下载Eclipse 3.6
2.1.3 下裁Android SDK
2.1.4命令行窗口
2.1.5 安装ADT
2.2了解基本组件
2.2.1 View
2.2.2 Activity
2.2.3 Fragment
2.2.4 Intent
2.2.5 ContentProvider
2.2.6 Service
2.2.7 AndroidManifest.xml
2.2.8 AVD
2.3 Hello World!
2.4 AVD
2.5在真实设备上运行
2.6剖析Android应用程序的结构
2.7了解应用程序生命周期
2.8简单调试
2.9参考资料
2.10小结
2.1 1面试问题
第3章使用Android资源
3.1资源
3.1.1字符串资源
3.1.2布局资源
3.1.3 资源引用语法
3.1.4 定义资源ID供以后使用
3.1.5 已编译和未编译的Android资源
3.2 Android关键资源
3.3使用任意XML资源文件
3.4使用原始资源
3.5使用资产
3.6了解资源目录结构
3.7资源和配置更改
3.8参考资料URL
第3章使用Android资源
3.9小结
3.10面试问题
第4章ContentProvider
4.1探索Android内置的ContentProvider
4.1.1 在模拟器和可用设备上利用数据库
4.1.2快速了解SQLite
4.2 ContentProvider的架构
4.2.1 Android内容URl的结构
4.2.2 AndroidMIME类型的结构
4.2.3 使用URl读取数据
4.2.4使用游标
4.2.5使用where子句
4.2.6插入记录
4.2.7 将文件添加到contentProvider中
4.2.8更新和删除
4.3实现ContentProvider
4.3.1 计划数据库
4.3.2扩展ContentProvider
4.3.3履行MIME类型契约
4.3.4实现query方法
4.3.5实现insert方法
4.3.6实现update方法
4.3.7实现delete方法
4.3.8 使用UriMatcher来解析URI
4.3.9使用投影映射
4.3.10 注册提供程序
4.4练习图书提供程序
4.4.1 添加图书
4.4.2删除图书
4.4.3 获取图书数量
4.4.4显示图书列表
4.5资源
4.6小结
4.7面试问题
第5章 Intent
5.1 Android Intent基础知识
5.2 Android中可用的Intent
5.3 Intent的组成
5.3.1 Intent和数据URl
5.3.2一般操作
5.3.3使用extra信息
5.3.4使用组件直接调用活动
5.3.5 Intent类别
5.3.6将Intent解析为组件的规则
5.4练习使用ACTION PICK
5.5练习使用GET—CONTENT操作
5.6挂起的Intent
5.7资源
5.8小结
5.9面试问题
第6章构建用户界面和使用控件
6.1 Android中的UI开发
6.1.1 完全利用代码来构建UI
6.1.2 完全使用XML构建UI
6.1.3使用XML结合代码构建UI
6.2 Android中的常见控件
6.2.1文本控件
6.2.2按钮控件
6.2.3 ImageView控件
6.2.4 日期和时间控件
6.2.5 MapView控件
6.3适配器
6.3.1 SimpleCursorAdapter
6.3.2 了解ArrayAdapter
6.4结合使用适配器和AdapterView
6.4.1基本的列表控件:ListView
6.4.2 GridView控件
6.4.3 Spinner控件
6.4.4 Gallery控件
6.4.5创建自定义适配器
6.4.6 Android中的其他控件
6.5样式和主题
6.5.1 使用样式
6.5.2使用主题
6.6布局管理器
6.6.1 LinearLayout布局管理器
……
第7章使用菜单
第8章多用途的碎片
第9章对话框
第10章ActionBar
第11章高级调试与分析
第12章响应配置变化
第13章首选项及保存状态
第14章探索安全性和权限
第15章构建和使用服务
第16章包
第17章处理程序
第18章AsyncTask详解
第19章广播接收程序和长期运行的服务
第20章闹钟管理器
第21章2D动画揭秘
第22章地图和基于位置的服务
第23章电话API
第24章媒体框架
第25章主屏幕部件
第26章列表部件
第27章触摸屏
第28章实现拖放操作
第29章传感器
第30章联系人API
第31章部署应用程序AndroidMarket

亚马逊链接

基本信息

名称: 精彩绝伦的Android UI设计 响应式用户界面与设计模式
作者信息: 作者: 莱特曼 (Juhani Lehtimaki) [ 英文 pdf ]

简单介绍

Andriod UI设计领域的经典著作,Amazon五星级畅销书,内容系统全面,实战性极强,包含大量最佳实践 不仅详细讲解了Android应用UI设计需要掌握的Android平台相关的各项技术和特性,而且还全面总结了Android应用UI设计的方法、技巧、模式,以及反模式

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
译者序
前言
第一部分Android设计简介
第1章用户界面设计和易用性入门
1.1考虑技术与设计
1.2理解心智模型
1.3为用户设计
1.4没有应用无所不精,选择适合自己的领域
1.5你是专家,用户不是设计师
1.6了解用户,为普通人设计
1.7总结
第2章不要马上开始编程
2.1原型设计
2.2设计工具
2.3用户测试
2.4总结
第3章考虑为移动和触摸设备设计
3.1为移动而设计
3.2为触摸界面设计
3.3总结
第4章探索Android平台
4.1Android平台的挑战
4.2Android的版本
4.3Android应用的发布
4.4开源的意义是什么
4.5总结
第二部分Android平台的特性和UI组件
第5章Android应用架构和在线指南
5.1Android应用程序结构概览
5.2Android项目结构概览
5.3官方Android指南
5.4总结
第6章Android的意图系统
6.1意图让应用程序相互协作
6.2使用社交网络并分享
6.3和浏览器一起工作
6.4Android意图系统的工作原理
6.5创建自定义行为
6.6意图无处不在
6.7意图与第三方API
6.8总结
第7章Android应用的导航结构
7.1Android导航系统的组件:活动和意图
7.2Android导航控件
7.3总结
第8章主界面应用小部件
8.1主界面应用小部件的使用
8.2更新应用小部件数据
8.3应用小部件布局和功能
8.4实现应用小部件
8.5总结
第9章通知及告知用户
9.1Android通知方法
9.2何时通知用户
9.3何时不要通知用户
9.4避免使用弹出框
9.5从状态栏通知中获得更多信息
9.6总结
第10章物理按键、输入法和传感器的设计
10.1触摸屏的设计
10.2手机物理按键的设计
10.3软键盘的设计
10.4物理键盘设计
10.5方向键和轨迹球设计
10.6触控笔设计
10.7声控设计
10.8外接键盘、鼠标和触摸板的设计
10.9智能附件的设计
10.10传感器的设计
10.11第二块屏幕的设计
10.12总结
第11章平台用户界面组件的设计
11.1使用用户界面小部件
11.2自定义用户界面小部件
11.3调整排版
11.4使用图标
11.5使用动画和过渡效果
11.6总结
第三部分可扩展的Android设计
第12章管理Android资源
12.1使用Android资源
12.2屏幕密度设计
12.3屏幕大小和形状的设计
12.4语言和地区设置
12.5设备控件的设计
12.6平台版本的设计
12.7设备模式的设计
12.8总结
第13章Android应用布局
13.1Android布局策略
13.2用XML文件和代码布局
13.3布局的管理
13.4定义布局的尺寸
13.5滚动条
13.6z轴的布局顺序
13.7内边距和外边距
13.8导入与合并布局文件
13.9自定义布局
13.10Android开发工具和用户界面生成器
13.11调试布局
13.12总结
第14章可缩放的图形
14.1九宫格图片
14.2绘图XML
14.3用代码绘制
14.4总结
第15章超越可缩放——响应式设计
15.1Android设备不仅仅只是手机
15.2了解响应式设计
15.3制作响应式用户界面的常见方法
15.4总结
第16章实现响应式用户界面
16.1片段简介
16.2片段和活动结构
16.3移植现存的应用
16.4示例程序
16.5总结
第四部分AndroidUI设计模式
第17章用户界面设计模式简介
17.1用户界面设计模式
17.2使用UI设计模式的好处
17.3Android设计指南中的设计模式
17.4本书介绍的用户界面设计模式
17.5总结
第18章用户操作设计模式
18.1使用操作栏模式
18.2使用快捷操作设计模式
18.3使用操作抽屉设计模式
18.4使用下拉刷新设计模式
18.5使用滑动忽略的手势
18.6总结
第19章导航和布局设计模式
19.1使用层叠图库
19.2使用仪表盘
19.3使用工作空间
19.4使用分拆视图
19.5根据上下文扩展的设计模式
19.6使用侧边导航
19.7总结
第20章数据设计模式
20.1使用动态列表
20.2使用图片占位符设计模式
20.3非强制登录模式
20.4使用拖动重排手柄模式
20.5总结
第21章用户界面设计反模式
21.1避免使用启动界面
21.2避免使用引导界面
21.3避免使用确认窗口
21.4避免在界面上使用Back按钮
21.5避免使用菜单按钮
21.6避免隐藏状态栏
21.7避免为快捷操作使用滑动覆盖层
21.8避免使用非Android的设计
21.9总结

亚马逊链接

基本信息

名称: Accelerated C++中文版
作者信息: 作者: Andrew Koenig [ 中文 pdf ]

简单介绍

Accelerated C++中文版》给人的印象会如此深刻呢?这是因为:
它一开始就向读者教导那些最有用的概念,而不是那些简单的注释 读者很快就能够以此开始编程
它描述的是现实中的问题和解决方案,而不是单纯的语言特性 读者不但学习到了这些特性,而且还知道如何把它们应用到程序中去
它涵盖的范围同时包括了语言本身和标准库 读者可以从一开始就使用标准库来编写自己的程序
作者通过他们在美国斯坦福大学的教学经验证明了这种方法的有效性—在那里,学生们在他们的第一堂课中就学习到了如何编写真实的程序。
不管你是一个渴望开始学习C++编程的新手,还是一个已经使用C++多年并对它有了很深了解的老手,作者们独特的教学方法和经验都使得《Accelerated C++中文版》应该成为你书架中不可缺少的一个补充。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
“c++设计新思维”丛书前言
译者序
前言
第0章 入门
 0.1 注释
 0.2 #include指令
 0.3 main函数
 0.4 花括号
 0.5 使用标准库来输出
 0.6 return语句
 0.7 稍微深入分析“Hello,world!”程序
 小结
 练习
第1章 使用字符串
1.1 输入
1.2 为名字装框输出
小结
练习
第2章 循环和计数
2.1 问题
2.2 程序的总体结构
2.3 输出任意多行
2.3.1 while语句
2.3.2 设计一个while语句
2.4 输出一行
2.4.1 输出边界字符
2.4.2 输出非边界字符
2.5 完整的框架程序
2.5.1 简化重复的std::
  2.5.2 使用for语句来简化
  2.5.3 精简测试
  2.5.4 整合结果
 2.6 计数
 小结
练习
第3章 使用批量数据
 3.1 计算学生成绩
 3.1.1 检测输入的结束
  3.1.2 循环不变式
 3.2 使用中值取代平均值
  3.2.1 用vector保存数据集
 3.2.2 生成输出
 3.2.3 值得注意的地方
小结
练习
第4章 组织程序和数据
4.1 组织计算
 4.1.1 查找中值
 4.1.2 重新实现计算最终成绩的方法
  4.1.3 读取家庭作业成绩
  4.1.4 3种函数形参
 4.1.5 使用函数来计算学生的成绩
4.2 组织数据
  4.2.1 把一个学生的所有数据集合起来
 4.2.2 处理学生记录
  4.2.3 生成报表
4.3 把各部分程序连接起来
4.4 把计算成绩程序分块
4.5 修改后的计算成绩程序
第5章 使用序列式容器并分析字符串
第6章 使用库算法
第7章 使用关联式容器
第8章 编写泛型函数
第9章 定义新类型
第10章 管理内存和底层数据结构
第11章 定义抽象数据类型
第12章 使类的对象数值一样工作
第13章 使用继承和动态绑定
第14章 几乎自动的管理内存
第15章 再看字符图形问题
第16章 如何学习C++
附录A 语言细节
附录B 标准库概要

亚马逊链接