标题：Android应用开发精解
图书信息
书名：Android应用开发精解
作者：高磊 杨诚 元凯　
出版时间： 2012-9　
出版社： 北京航空航天大学出版社
ISBN：978-7-5124-0918-7
开本： 710×1000 1/16
定价：￥39.00
  封面  封底
图书简介
本书以Android应用开发所需要的技术为线索，先后讲解了SDK一些工具的使用、UI开发、Service开发、数据存储、图形动画、网络开发、硬件操作、结合Web开发以及如何对应用进行优化等。本书并没有从基础的Eclipse安装、Hello World等讲起，而是以Android应用开发过程中常用的技术作为主线去讲解，很多内容需要读者有一定的开发经验才能够很好地理解。
本书在对各种技术阐述的过程中，并不是仅仅简单地把相关知识点讲完就结束了，而是在各知识点后面分享了大量项目实践的经验。这些都是作者在项目过程中思考的成果，是多年从事软件开发工作的技术沉淀，是项目实践过程中的精华。
本书适合有一定Java基础并且想要自学Android开发的编程爱好者、想要转行从事Android领域开发的程序员，以及正在从事Android的初学者阅读。
图书前言
如今的Android市场异常火爆，Android手机已经占据智能手机操作系统的半壁江山了。市场的火爆也带动了Android软件的发展，越来越多的开发者开始学习Android开发，开始涌入到Android开发的各个领域，这其中有一些软件开发经验丰富的开发者，也有一些刚刚毕业或者还在学校中的学生。然而，总的来说，大部分开发者在Android平台上的开发时间都不算很多，开发经验不足，需要不断在实际项目中学习和沉淀。 
如果您也想学习Android开发，或者正在学习Android开发，您一定对下面的问题最关心：Android开发到底难不难？这个问题没有标准的答案，笔者的理解，可以说简单，也可以说难。 
为什么说简单？这是因为Android开发主要使用Java语言，对于有Java基础的开发者入门很容易；即使原来没有基础，Java语言学习起来相对也容易些。还有Android的开发成本相对较低，只要有一台PC机就可以用模拟器学习开发了。 
为什么说难？这是因为Android市场的复杂性。一个是Android SDK的版本兼容问题。由于市场上Android设备的SDK版本各不相同，开发软件时就不得不考虑不同SDK版本的兼容问题。一个是硬件兼容问题。Android设备的硬件支持五花八门，包括CPU、内存、屏幕分辨率、是否支持某些硬件特性等，开发软件时就不得不考虑市场上已有的各种Android硬件设备的兼容性问题。一个就是定制ROM的问题。Android是开源的，设备厂商可以修改Android的代码并且定制在自己的设备中，从而导致了大多数Android设备都使用了定制过的ROM，这就需要开发者花更多的时间和力气来解决定制ROM的各种问题。还有一个就是Android在国内的开发资料相对较少，很多时候需要去国外网站，或者直接阅读Android的源代码来解决某些问题，这就增加了学习Android的难度。 
总体来说，开发一个Android应用并不难，开发出一个优秀的能够经受住市场考验的Android应用却并不容易，需要开发者有丰富的Android开发经验。无论您是想从头开始学习Android应用开发，还是想学习积累经验，本书都是适合的。 
本书特点 
现在市场上的Android书籍，要么以讲解知识点为主，点到为止；要么是以某虚拟项目为主，介绍项目的同时附上大量的源代码，很少会把项目过程中积累的实际经验写进去。本书最大的特点就是除了讲解Android应用开发的各知识点以外，还分享了大量的实际经验；这些经验一般都无法从现有的书籍或者网络上获得，这些都是在项目过程中思考的成果，是多年从事软件开发工作的技术沉淀。 
本书作者 
本书的第1~4章由元凯编写，第5~9章由杨诚编写，第10~12章由高磊编写，全书由高磊审阅。由于本书涉及知识较多，而作者水平有限，很难全部精通，难免有疏漏之处，如果读者朋友发现错误，请批评指正，非常感谢。 
鸣谢 
最后在此感谢现在和曾经一起日夜奋战的兄弟姐妹们，感谢出版社的各位同仁，也感谢家人默默的理解和支持。特别的，感谢刘雪莲、禅延玲、李洁，谢谢你们。
图书目录
第1章工欲善其事 必先利其器—Android SDK工具1 
1.1巧妇难为无米之炊—Android SDK的安装1 
1.2设备管理工具—调试桥（ADB）3 
1.2.1ADB简介3 
1.2.2ADB常用命令4 
1.3没有真机一样开发—Android模拟器7 
1.4Android调试—调试工具DDMS9 
1.5UI布局分析工具—视图工具（Hierarchy Viewer）14 
1.6Log打印—Log输出工具logcat17 
1.6.1启动logcat17 
1.6.2过滤日志输出17 
1.6.3控制日志输出格式18 
1.6.4查看可用日志缓冲区19 
1.7图片拉伸不失真—九宫格绘制工具Draw 9Patch20 
1.7.1什么是“点九”文件20 
1.7.2点九文件的制作20 
第2章吸引你的眼球—UI编程24 
2.1UI基础—常用UI组件24 
2.1.1文本显示—文本框（TextView）24 
2.1.2按钮（Button）27 
2.1.3文本编辑—编辑框（EditText）29 
2.1.4图片显示—图片视图（ImageView）32 
2.1.5多项选择—多选框（CheckBox）和单项选择—单选框 
（RadioBox）34 
2.1.6图片拖动—拖动效果（Gallery）38 
2.1.7列表组件（ListView）41 
2.2彰显你的个性—自定义UI组件48 
2.3简单明了的消息提示框（Toast）和对话框（Dialog）51 
2.3.1Toast提示51 
2.3.2Dialog提示52 
2.4Menu键的呼唤—Menu菜单56 
第3章界面UI的基石—UI布局61 
3.1用户界面的基本单元—View视图61 
3.2百花齐放—各种Layout布局64 
3.2.1Layout布局的简单介绍64 
3.2.2线性布局（LinearLayout）64 
3.2.3相对布局（RelativeLayout）67 
3.2.4框架布局（FrameLayout）70 
3.2.5表单布局（TableLayout）72 
3.2.6绝对布局（AbsoluteLayout）74 
3.3样式（Style）和主题（Theme）的使用76 
3.3.1样式（Style）的使用76 
3.3.2主题（Theme）的使用77 
Android应用开发精解 
第4章Android开发三大基石—Activity、Service和Handler79 
4.1应用程序的接口—Activity窗口79 
4.1.1Activity生命周期79 
4.1.2Activity栈81 
4.1.3Activity的创建81 
4.1.4Activity的4种加载模式82 
4.1.5Activity交互—Activity跳转83 
4.1.6Activity中数据传递86 
4.2千变万化的服务-Service开发87 
4.2.1Service的生命周期87 
4.2.2Service的启动和停止88 
4.2.3我的服务我来用—本地服务开发89 
4.2.4开机自启动的服务93 
4.3Android线程间的通信—消息机制95 
4.3.1消息的传递—Handler的使用95 
4.3.2Android中消息机制的详细分析97 
第5章以数据为中心—数据存取100 
5.1文件操作100 
5.1.1读写一般的文本文件100 
5.1.2结构性的文件—读写XML文件103 
5.1.3自由操作，随心所欲—序列化和反序列化113 
5.2通用的数据操作方式—数据库116 
5.2.1SQLite数据库介绍116 
5.2.2创建并打开数据库116 
5.2.3添加、删除和修改操作117 
5.2.4游标的操作—使用Cursor120 
5.3安全方便简单—使用SharedPreferences121 
5.4我的数据大家用—ContentProvider、ContentResolver123 
第6章一张白纸好作画—Canvas画布126 
6.1Canvas画布简介126 
6.1.1View Canvas—使用普通View的Canvas画图126 
6.1.2Bitmap Canvas—使用普通Bitmap的Canvas画图128 
6.1.3SurfaceView Canvas—使用SurfaceView的Canvas画图128 
6.2Canvas常用绘制方法131 
6.3对Canvas进行变换133 
6.4Canvas绘制的辅助类134 
6.4.1画笔android.graphics.Paint134 
6.4.2字体android.graphics.Typeface135 
6.4.3颜色android.graphics.Color136 
6.4.4路径android.graphics.Path137 
6.4.5路径的高级效果android.graphics.PathEffect139 
6.4.6点类android.graphics.Point和android.graphics.PointF141 
6.4.7形状类android.graphics.Rect和android.graphics.RectF142 
6.4.8区域android.graphics.Region与Region.Op144 
6.4.9千姿百态,矩阵变换android.graphics.Matrix145 
第7章实现炫酷效果—图像和动画149 
7.1Android的几种常用图像类型149 
7.2图片的基础—Bitmap（位图）150 
7.2.1如何获取位图资源150 
7.2.2如果获取位图的信息151 
7.2.3位图的显示与变换152 
7.3变化多端—Drawable（绘图类）154 
7.3.1Drawable的一些常用子类154 
7.3.2BitmapDrawable154 
7.3.3点九图片—NinePatchDrawable155 
7.3.4会动的图片—StateListDrawable156 
7.3.5颜色填充的另一种方法—PaintDrawable157 
7.3.6超炫的特效—ShapeDrawable157 
7.3.7简单的帧动画—AnimationDrawable165 
7.4轻量级图片—Picture167 
7.5Drawable、Bitmap、byte[]之间的转换167 
7.6Android提供的几种动画效果（Animation）168 
7.7渐变动画—Tween Animation169 
7.7.1Tween Animation简介169 
7.7.2Tween Animation共同的属性169 
7.7.3淡进淡出—AlphaAnimation170 
7.7.4忽大忽小—ScaleAnimation171 
7.7.5平移—TranslateAnimation172 
7.7.6旋转—RotateAnimation173 
7.7.7实现一个自己的TweenAnimation174 
7.8渐变动画—Frame Animation176 
7.9随意组合动画效果—AnimationSet177 
7.10加速的工具—Interpolator178 
第8章网络的时代—网络开发180 
8.1Android中网络开发概述180 
8.2直接基于Socket编程181 
8.2.1Socket编程简介181 
8.2.2基于TCP协议的Socket编程183 
8.2.3基于UDP协议的Socket编程184 
8.3基于最成熟的Web协议—HTTP协议编程185 
8.3.1HTTP协议简介185 
8.3.2使用URL类读取HTTP资源187 
8.3.3使用HttpURLConnection类访问HTTP资源189 
8.3.4使用Apache的HttpClient190 
8.4耗时操作的通用方式—多线程与异步处理192 
8.4.1多线程和异步处理简介192 
8.4.2Handler方式193 
8.4.3AsyncTask类实现后台任务的处理197 
8.5轻量级的数据交换格式—JSON199 
8.5.1客户端与服务器端的数据交互199 
8.5.2XML格式与JSON格式的比较201 
8.5.3解析JSON格式数据202 
第9章多语言环境的支持和多屏幕的适配205 
9.1Android程序的资源文件205 
9.1.1资源文件的目录结构205 
9.1.2资源文件目录的修饰语206 
9.1.3程序加载资源文件的步骤208 
9.2国际化和本地化的支持209 
9.3多屏幕的适配210 
9.3.1屏幕参数的基本概念210 
9.3.2屏幕参数的各种单位及相互转换211 
9.3.3处理屏幕自适应的方法212 
9.3.4详细说明Density214 
第10章利用手机特性—结合硬件进行开发217 
10.1炫酷的人机交互—触摸和手势217 
10.1.1实现滑动翻页—使用ViewFlipper217 
10.1.2支持多个手指一起操作—实现多点触摸222 
10.1.3识别手势—使用GestureDetector227 
10.2我在哪里—使用定位功能230 
10.3电话拨打和短信发送233 
10.3.1调用系统的电话拨打功能233 
10.3.2实现发送短信的功能234 
10.4拍照和摄像235 
10.5使用传感器238 
10.5.1传感器概述238 
10.5.2加速度传感器241 
10.5.3方向传感器242 
10.5.4其他传感器243 
第11章避重就轻—结合Web开发Android应用245 
11.1Android上的Web应用概述245 
11.2使用WebView载入Web页面247 
11.2.1Webkit引擎和WebView控件247 
11.2.2浏览基本的Web页面247 
11.2.3开启对于JavaScript的支持249 
11.2.4监听Web页面的载入250 
11.2.5让WebView支持文件下载250 
11.3本地代码与Web页面交互252 
11.3.1向Web页面传递数据252 
11.3.2本地代码调用Web页面JavaScript方法254 
11.3.3Web页面调用本地Java方法254 
11.4Web页面的JavaScript调试259 
11.5常用移动设备Web开发框架260 
11.5.1jQuery Mobile框架简介260 
11.5.2Sencha Touch框架简介262 
11.5.3PhoneGap开发平台简介262 
第12章细节决定成败—Android应用程序的优化264 
12.1对应用内存的优化264 
12.1.1Android程序的内存概述264 
12.1.2追踪内存—使用内存优化辅助工具266 
12.1.3吃内存大户—Bitmap的优化270 
12.1.4想回收就回收—使用软引用和弱引用274 
12.1.5注重细节—从代码角度进行优化277 
12.2对界面UI的优化281 
12.2.1多利用Android系统的资源281 
12.2.2抽取相同的布局284 
12.2.3精简UI层次285 
12.2.4界面延迟加载技术287 
12.3留条后路—对Crash进行处理288 
12.3.1为什么需要捕获Crash288 
12.3.2如何捕获和处理Crash289 
参考文献292
[1]
[2]