扫描二维码,下载手机APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:3315713922

Android编程权威指南-(第2版)

综合评级:
★★★★★

定价:
¥109.00

作者:
菲利普斯

出版社:
人民邮电

出版日期:
2016/05/01

页数:
551

ISBN:
9787115422460

书籍介绍

权威——源自大名鼎鼎的BigNerd Ranch训练营培训讲义,该训练营已经为微软、谷歌、Facebook等行业巨头培养了众多专业人才。

全面——涵盖Android开发所有必备理论概念和技术知识点。

实用——8个Android应用开发实战项目,传授*直接的开发经验。

易懂——以循序渐进的方式精心编排章节,一步一步写出Android应用。

Big Nerd Ranch是美国一家专业的移动开发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程指南。全书共34章,详细介绍了8个Android 应用。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得前沿的开发经验。如果你熟悉Java语言,或者了解面向对象编程,那就立刻开始Android编程之旅吧!

作者简介

Bill Phillips Big Nerd Ranch资深讲师。他在Big Nerd Ranch与人合作开发了广受好评的Android训练营培训课程,并为之编写教材(包括本书第1版)。此后,Bill一直坚持撰写博客、阅读各类文学作品、作曲奏乐以及著书。 Chris Stewart Big Nerd Ranch资深Android训练营讲师、Android团队主管。他致力于不断取得进步,精进技能。不坐在电脑前时,Chris喜欢远足和旅行。 Brian Hardy Big Nerd Ranch的iOS和Cocoa工程主管。他是Android训练营的首批讲师,与许多客户合作开发了众多Android和iOS移动应用。除同开发团队构建更出色的软件和研究自己*新的项目之外,Brian喜欢陪伴朋友与家人——通常是在烧烤架旁。 Kristin Marsicano Big Nerd Ranch资深讲师、Android开发者。她喜欢与他人分享知识,对学习、软件开发以及二者的交集充满热情。在授课和开发应用之余,Kristin会为家人烹调美食、练习瑜伽或学习一些新知识。

目录

第1章  Android开发初体验  1

1.1  应用开发基础  1

1.2  创建Android项目  2

1.3  Android Studio使用导航  6

1.4  用户界面设计  7

1.4.1  视图层级结构  10

1.4.2  组件属性  11

1.4.3  创建字符串资源  12

1.4.4  预览界面布局  12

1.5  从布局XML到视图对象  13

1.6  组件的实际应用  17

1.6.1  引用组件  18

1.6.2  设置监听器  18

1.7  创建提示消息  20

1.8  使用模拟器运行应用  23

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

第2章  Android与MVC设计模式  29

2.1  创建新类  29

2.2  Android与MVC设计模式  32

2.3  更新视图层  34

2.4  更新控制层  36

2.5  在设备上运行应用  40

2.5.1  连接设备  40

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

2.6  添加图标资源  42

2.6.1  向项目中添加资源  43

2.6.2  在XML文件中引用资源  45

2.7  关于挑战练习  46

2.8  挑战练习:为TextView添加监听器  46

2.9  挑战练习:添加后退按钮  46

2.10  挑战练习:从按钮到图标按钮  47

第3章  Activity的生命周期  49

3.1  日志跟踪理解Activity生命周期  50

3.1.1  输出日志信息  50

3.1.2  使用LogCat  52

3.2  设备旋转与Activity生命周期  55

3.3  设备旋转前保存数据  59

3.4  再探Activity生命周期  61

3.5  深入学习:测试onSaveInstance-State(Bundle)方法  62

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

第4章  Android应用的调试  65

4.1  异常与栈跟踪  66

4.1.1  诊断应用异常  67

4.1.2  记录栈跟踪日志  68

4.1.3  设置断点  69

4.1.4  使用异常断点  72

4.2  Android特有的调试工具  73

4.2.1  使用Android Lint  73

4.2.2  R类的问题  75

第5章  第二个activity  76

5.1  创建第二个activity  77

5.1.1  创建新的activity  78

5.1.2  创建新的activity子类  81

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

5.1.4  为QuizActivity添加Cheat按钮  82

5.2  启动activity  84

5.3  activity间的数据传递  86

5.3.1  使用intent extra  86

5.3.2  从子activity获取返回结果  89

5.4  activity的使用与管理  94

5.5  挑战练习  97

第6章  Android SDK版本与兼容  98

6.1  Android SDK版本  98

6.2  Android编程与兼容性问题  99

6.2.1  比较合理的版本  99

6.2.2  SDK*低版本  101

6.2.3  SDK目标版本  101

6.2.4  SDK编译版本  101

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

6.3  使用Android开发者文档  104

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

第7章  UI fragment与fragment管理器  107

7.1  UI设计的灵活性需求  108

7.2  fragment的引入  108

7.3  着手开发CriminalIntent  109

7.3.1  创建新项目  112

7.3.2  fragment与支持库  113

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

7.3.4  创建Crime类  117

7.4  托管UI fragment  118

7.4.1  fragment的生命周期  118

7.4.2  托管的两种方式  119

7.4.3  定义容器视图  119

7.5  创建UI fragment  120

7.5.1  定义CrimeFragment的布局  121

7.5.2  创建CrimeFragment类  122

7.6  添加UI fragment到Fragment-Manager  125

7.6.1  fragment事务  126

7.6.2  FragmentManager与fragment生命周期  129

7.7  采用fragment的应用架构  130

7.8  深入学习:为什么应优先使用支持库版fragment  131

7.9  深入学习:使用操作系统内置版fragment  131

第8章  使用布局与组件创建用户界面  132

8.1  升级Crime类  132

8.2  更新布局  133

8.3  生成并使用组件  135

8.4  深入探讨XML布局属性  136

8.4.1  样式、主题及主题属性  136

8.4.2  dp、sp以及屏幕像素密度  137

8.4.3  Android开发设计原则  138

8.4.4  布局参数  139

8.4.5  边距与内边距  139

8.5  使用图形布局工具  140

8.5.1  创建水平模式布局  141

8.5.2  添加新组件  142

8.5.3  在属性视图中编辑组件属性  143

8.5.4  在框架视图中重新组织组件  144

8.5.5  更新子组件的布局参数  145

8.5.6  android:layout_weight属性的工作原理  146

8.5.7  图形布局工具使用总结  147

8.5.8  组件ID与多种布局  148

8.6  挑战练习:日期格式化  148

第9章  使用RecyclerView显示列表  149

9.1  升级CriminalIntent应用的模型层  150

9.2  使用抽象activity托管fragment  153

9.2.1  通用的fragment托管布局  153

9.2.2  抽象activity类  154

9.3  RecyclerView、Adapter和ViewHolder  158

9.3.1  ViewHolder和Adapter  159

9.3.2  使用RecyclerView  161

9.3.3  实现Adapter和ViewHolder  163

9.4  定制列表项  166

9.4.1  创建列表项布局  166

9.4.2  使用定制列表项视图  168

9.5  响应点击  170

9.6  深入学习:ListView和GridView  171

9.7  深入学习:单例  171

第10章  使用fragmentargument  173

10.1  从fragment中启动activity  173

10.1.1  附加extra信息  174

10.1.2  获取extra信息  175

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

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

10.2  fragment argument  177

10.2.1  附加argument给fragment  178

10.2.2  获取argument  179

10.3  刷新显示列表项  180

10.4  通过fragment获取返回结果  182

10.5  挑战练习:实现高效的RecyclerView刷新  183

10.6  深入学习:为何要用fragment argument  183

第11章  使用ViewPager  185

11.1  创建CrimePagerActivity  186

11.1.1  ViewPager与PagerAdapter  187

11.1.2  整合并配置使用CrimePagerActivity  188

11.2  FragmentStatePagerAdapter与FragmentPagerAdapter  190

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

11.4  深入学习:以代码的方式创建布局  193

第12章  对话框  194

12.1  使用AppCompat兼容库  195

12.2  创建DialogFragment  196

12.2.1  显示DialogFragment  198

12.2.2  设置对话框的显示内容  199

12.3  fragment间的数据传递  202

12.3.1  传递数据给DatePicker- Fragment  203

12.3.2  返回数据给Crime-Fragment  204

12.4  挑战练习:更多对话框  211

12.5  挑战练习:按设备类型展现DialogFragment  212

第13章  工具栏  213

13.1  AppCompat  213

13.2  工具栏菜单  216

13.2.1  在XML文件中定义菜单  217

13.2.2  创建菜单  221

13.2.3  响应菜单项选择  223

13.3  实现层级式导航  225

13.4  可选菜单项  226

13.4.1  切换菜单项标题  227

13.4.2“还有个问题”  229

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

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

13.7  挑战练习:优化字符串资源显示  231

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

第14章  SQLite数据库  233

14.1  定义Schema  233

14.2  创建初始数据库  234

14.3  修改CrimeLab类  238

14.4  写入数据库  239

14.4.1  使用ContentValues  239

14.4.2  插入和更新记录  240

14.5  读取数据库  242

14.5.1  使用CursorWrapper  243

14.5.2  创建模型层对象  244

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

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

14.8  挑战练习:删除Crime记录  248

第15章  隐式intent  249

15.1  添加按钮组件  250

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

15.3  使用格式化字符串  254

15.4  使用隐式intent  255

15.4.1  隐式intent的组成  255

15.4.2  发送消息  256

15.4.3  获取联系人信息  259

15.4.4  检查可响应任务的activity  263

15.5  挑战练习:ShareCompat  265

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

第16章  使用intent拍照  266

16.1  布置照片  266

16.2  外部存储  269

16.3  使用相机intent  272

16.3.1  外部存储使用权限  272

16.3.2  触发拍照  273

16.4  缩放和显示位图  274

16.5  功能声明  277

16.6  深入学习:使用include标签  278

16.7  挑战练习:优化照片显示  278

16.8  挑战练习:优化缩略图加载  279

第17章  Master-Detail用户界面  280

17.1  增加布局灵活性  281

17.1.1  修改SingleFragment- Activity  282

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

17.1.3  使用别名资源  284

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

17.2  Activity:fragment的托管者  286

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

第18章  Assets  297

18.1  为何使用assets  297

18.2  创建BeatBox应用  298

18.3  导入assets  301

18.4  处理assets  303

18.5  使用Assets  305

18.6  访问Assets  308

18.7  深入学习:什么是non-assets  308

第19章  使用SoundPool播放音频  309

19.1  创建SoundPool  309

19.2  加载音频文件  310

19.3  播放音频  311

19.4  释放音频  313

19.5  设备旋转和对象保存  314

19.5.1  保留fragment  315

19.5.2  旋转和已保留fragment  316

19.6  深入学习:是否要保留  318

19.7  深入学习:设备旋转处理再探  318

第20章  样式与主题  321

20.1  颜色资源  321

20.2  样式  322

20.3  主题  324

20.4  添加主题颜色  327

20.5  覆盖主题属性  328

20.6  修改按钮属性  332

20.7  深入学习:样式继承拾遗  334

20.8  深入学习:引用主题属性  335

20.9  挑战练习:创建多版本主题  335

第21章  XML drawable  336

21.1  统一按钮样式  337

21.2  shape drawable  338

21.3  state list drawable  340

21.4  layer list drawable  341

21.5  深入学习:为什么要用XML drawable  342

21.6  深入学习:使用9-patch图像  343

21.7  深入学习:使用Mipmap图像  347

第22章  深入学习intent和任务  348

22.1  创建NerdLauncher项目  348

22.2  解析隐式intent  351

22.3  在运行时创建显式intent  355

22.4  任务与后退栈  357

22.4.1  在任务间切换  357

22.4.2  启动新任务  358

22.5  使用NerdLauncher应用作为设备主屏幕  361

22.6  挑战练习:应用图标  362

22.7  深入学习:进程与任务  362

22.8  深入学习:并发文档  364

第23章  HTTP与后台任务  367

23.1  创建PhotoGallery应用  368

23.2  网络连接基本  371

23.3  使用AsyncTask在后台线程上运行代码  373

23.4  线程与主线程  374

23.5  从Flickr获取JSON数据  376

23.6  从AsyncTask回到主线程  383

23.7  清理AsyncTask  386

23.8  深入学习:AsyncTask再探  387

23.9  深入学习:AsyncTask的替代方案  388

23.10  挑战练习:Gson  388

23.11  挑战练习:分页  388

23.12  挑战练习:动态调整网格列  389

第24章  Looper、Handler和HandlerThread  390

24.1  配置RecyclerView以显示图片  390

24.2  批量下载缩略图  393

24.3  与主线程通信  393

24.4  创建并启动后台线程  394

24.5  Message与message handler  396

24.5.1  消息的剖析  397

24.5.2  Handler的剖析  397

24.5.3  使用handler  398

24.5.4  传递handler  402

24.6  深入学习:AsyncTask与线程  407

24.7  挑战练习:预加载以及缓存  407

24.8  深入学习:解决图片下载问题  408

第25章  搜索  409

25.1  搜索Flickr网站  410

25.2  使用SearchView  414

25.3  使用shared preferences实现轻量级数据存储  419

25.4  优化应用  422

25.5  挑战练习:深度优化PhotoGallery应用  423

第26章  后台服务  424

26.1  创建IntentService  424

26.2  服务的作用  427

26.3  查找*新返回结果  428

26.4  使用AlarmManager延迟运行服务  430

26.4.1  合理控制服务启动的频度  432

26.4.2  PendingIntent  433

26.4.3  使用PendingIntent管理定时器  434

26.5  控制定时器  434

26.6  通知信息  437

26.7  挑战练习:可穿戴设备上的通知  439

26.8  深入学习:服务细节内容  440

26.8.1  服务的能与不能  440

26.8.2  服务的生命周期  440

26.8.3  non-sticky服务  440

26.8.4  sticky服务  441

26.8.5  绑定服务  441

26.9  深入学习:JobScheduler和JobService  442

26.10  深入学习:Sync Adapter  445

26.11  挑战练习:在Lollipop设备上使用JobService  446

第27章  broadcast intent  447

27.1  一般intent和broadcast intent  447

27.2  接收系统broadcast:重启后唤醒  448

27.2.1  standalone receiver  448

27.2.2  使用receiver  450

27.3  过滤前台通知消息  452

27.3.1  发送broadcast intent  452

27.3.2  动态broadcast receiver  453

27.3.3  使用私有权限  455

27.3.4  使用有序broadcast  458

27.4  receiver与长时运行任务  462

27.5  深入学习:本地事件  462

27.5.1  使用EventBus  463

27.5.2  使用Rxjava  463

27.6  深入学习:检测fragment的状态  464

第28章  网页浏览  466

28.1  *后一段Flickr数据  466

28.2  简单方式:隐式intent  469

28.3  较难方式:使用WebView  470

28.4  处理WebView的设备旋转问题  476

28.5  深入学习:注入Javascript对象  477

28.6  深入学习:KitKat的WebView  478

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

28.8  挑战练习:非HTTP链接支持  479

第29章  定制视图与触摸事件  480

29.1  创建DragAndDraw项目  480

29.1.1  创建DragAndDraw-Activity  481

29.1.2  创建DragAndDraw-Fragment  481

29.2  创建定制视图  482

29.3  处理触摸事件  484

29.4  onDraw(...)方法内的图形绘制  488

29.5  挑战练习:设备旋转问题  490

29.6  挑战练习:旋转矩形框  490

第30章  属性动画  492

30.1  建立场景  492

30.2  简单属性动画  495

30.2.1  视图属性转换  498

30.2.2  使用不同的interpolator  500

30.2.3  色彩渐变  500

30.3  播放多个动画  502

30.4  深入学习:其他动画API  504

30.4.1  传统动画工具  504

30.4.2  转场  504

30.5  挑战练习  504

第31章  地理位置和Play服务  505

31.1  地理位置和定位类库  505

31.2  创建Locatr项目  506

31.3  Play服务和模拟器  507

31.4  创建Locatr应用  510

31.5  配置Google Play服务  512

31.6  使用Google Play服务  514

31.7  基于地理位置的Flickr搜索  516

31.8  获取定位数据  517

31.9  寻找并显示图片  519

31.10  挑战练习:进度指示器  521

第32章  使用地图  522

32.1  导入Play地图服务库  522

32.2  Android上的地图服务  522

32.3  地图API设置  523

32.4  创建地图  525

32.5  获取更多地理位置数据  526

32.6  使用地图  529

32.7  深入学习:团队开发和API key  534

第33章  material design  536

33.1  material surface  536

33.1.1  elevation和Z值  538

33.1.2  state list animator  539

33.2  动画工具  540

33.2.1  circular reveal  541

33.2.2  shared element transition  542

33.3  新的视图组件  545

33.3.1  card  545

33.3.2  floating action button  547

33.3.3  snackbar  548

33.4  深入学习material design  549