描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121314292
*书中采用了以应用为中心的方法,包含8个完整编码的Android应用。
*专业的程序员开发者指南,讲解如何利用Android 6和Android Studio开发用于智能手机和平板电脑的应用。
*实用、例子丰富的Android教程。
1.1 简介 2
1.2 Android——的移动操作系统 2
1.3 Android的特点 3
1.4 Android操作系统 5
1.4.1 Android 2.2 (Froyo) 5
1.4.2 Android 2.3 (Gingerbread) 6
1.4.3 Android 3.0~3.2 (Honeycomb) 6
1.4.4 Android 4.0~4.0.4 (Ice Cream Sandwich) 6
1.4.5 Android 4.1~4.3 (Jelly Bean) 7
1.4.6 Android 4.4 (KitKat) 8
1.4.7 Android 5.0和5.1 (Lollipop) 8
1.4.8 Android 6 (Marshmallow) 9
1.5 从Google Play下载应用 9
1.6 包 10
1.7 Android软件开发工具集(SDK) 11
1.8 面向对象编程:简短回顾 13
1.8.1 汽车作为对象 13
1.8.2 方法与类 13
1.8.3 实例化 14
1.8.4 复用 14
1.8.5 消息与方法调用 14
1.8.6 属性与实例变量 14
1.8.7 封装 14
1.8.8 继承 14
1.8.9 面向对象的分析与设计(OOAD) 14
1.9 在AVD中测试Tip Calculator应用 15
1.9.1 在Android Studio中打开Tip Calculator应用的工程 15
1.9.2 创建Android虚拟设备(AVD) 16
1.9.3 在Nexus 6 AVD中运行Tip Calculator应用 18
1.9.4 在Android设备上运行Tip Calculator应用 20
1.10 创建好的Android应用 21
1.11 Android开发资源 22
1.12 小结 23
第2章 Welcome应用 24
2.1 简介 25
2.2 技术概览 26
2.2.1 Android Studio 26
2.2.2 LinearLayout,TextView和ImageView 26
2.2.3 可扩展标记语言(XML) 26
2.2.4 应用的资源 26
2.2.5 辅助性 26
2.2.6 国际化 27
2.3 创建应用 27
2.3.1 启动Android Studio 27
2.3.2 创建新工程 27
2.3.3 Create New Project对话框 28
2.3.4 Target Android Devices步骤 28
2.3.5 Add an Activity to Mobile步骤 29
2.3.6 Customize the Activity步骤 30
2.4 Android Studio窗口 31
2.4.1 Project窗口 31
2.4.2 编辑器窗口 32
2.4.3 Component Tree窗口 33
2.4.4 应用的资源文件 33
2.4.5 布局编辑器 33
2.4.6 默认GUI 33
2.4.7 默认GUI的XML 34
2.5 用布局编辑器构建应用的GUI 35
2.5.1 向工程添加图像 35
2.5.2 添加应用图标 36
2.5.3 将RelativeLayout 改成LinearLayout 37
2.5.4 改变LinearLayout的id和orientation属性 38
2.5.5 配置TextView的id和text属性 39
2.5.6 配置TextView的textSize属性 40
2.5.7 设置TextView的textColor属性 41
2.5.8 设置TextView的gravity属性 41
2.5.9 设置TextView的layout:gravity属性 41
2.5.10 设置TextView的layout:weight属性 43
2.5.11 添加ImageView,显示图像 43
2.5.12 预览设计的效果 46
2.6 运行Welcome应用 46
2.7 为应用增加辅助功能 48
2.8 使应用国际化 49
2.8.1 本地化 49
2.8.2 为本地化资源命名文件夹 49
2.8.3 将字符串译文添加到工程中 49
2.8.4 本地化字符串 50
2.8.5 在AVD中测试西班牙语的应用 50
2.8.6 在设备中测试西班牙语的应用 51
2.8.7 TalkBack与本地化 51
2.8.8 本地化清单 52
2.8.9 专业翻译 52
2.9 小结 52
第3章 Tip Calculator应用 53
3.1 简介 54
3.2 测试驱动的Tip Calculator应用 55
3.3 技术概览 56
3.3.1 Activity类 56
3.3.2 Activity类的生命周期方法 56
3.3.3 AppCompat库与AppCompatActivity类 57
3.3.4 安排GridLayout中的视图 57
3.3.5 利用布局编辑器、Component Tree和Properties窗口创建并定制GUI 58
3.3.6 格式化数字,表示本地货币和百分比字符串 58
3.3.7 实现TextWatcher接口,处理EditText中的文本变化 58
3.3.8 实现OnSeekBarChangeListener接口,处理SeekBar中的滑块位置变化 58
3.3.9 材料主题 58
3.3.10 材料设计:高度和阴影 59
3.3.11 材料设计:颜色 59
3.3.12 AndroidManifest.xml 60
3.3.13 在Properties窗口中搜索 60
3.4 构建GUI 60
3.4.1 GridLayout简介 60
3.4.2 创建TipCalculator工程 61
3.4.3 改成GridLayout布局 61
3.4.4 添加TextView,EditText和SeekBar 62
3.4.5 定制视图 64
3.5 默认主题及定制主题颜色 66
3.5.1 parent主题 66
3.5.2 定制主题颜色 67
3.5.3 样式的常用View属性值 70
3.6 添加应用的逻辑功能 70
3.6.1 package声明和import声明 70
3.6.2 AppCompatActivity的MainActivity子类 71
3.6.3 类变量与实例变量 71
3.6.4 重写Activity方法onCreate 72
3.6.5 MainActivity方法calculate 74
3.6.6 实现OnSeekBarChangeListener接口的匿名内部类 74
3.6.7 实现TextWatcher接口的匿名内部类 75
3.7 AndroidManifest.xml 76
3.7.1 manifest元素 77
3.7.2 application元素 77
3.7.3 activity元素 77
3.7.4 intent-filter元素 78
3.8 小结 79
第4章 Flag Quiz应用 80
4.1 简介 81
4.2 测试驱动的Flag Quiz应用 83
4.2.1 配置应用的设置 83
4.2.2 运行应用 84
4.3 技术概览 86
4.3.1 菜单 86
4.3.2 Fragment 86
4.3.3 Fragment生命周期方法 87
4.3.4 管理Fragment 88
4.3.5 项 88
4.3.6 assets文件夹 88
4.3.7 资源文件夹 89
4.3.8 支持不同屏幕尺寸和分辨率 89
4.3.9 确定设备方向 90
4.3.10 用于显示消息的Toast 90
4.3.11 使用Handler在未来执行一个Runnable对象 90
4.3.12 将动画用于View 90
4.3.13 使用ViewAnimationUtils创建环形缩放动画 90
4.3.14 通过颜色状态表根据视图状态确定颜色 90
4.3.15 AlertDialog 91
4.3.16 为异常消息做日志 91
4.3.17 通过显示Intent启动另一个活动 91
4.3.18 Java数据结构 92
4.3.19 Java SE 7特性 92
4.3.20 AndroidManifest.xml 93
4.4 创建工程、资源文件和另外的类 93
4.4.1 创建工程 93
4.4.2 Blank Activity模板布局 94
4.4.3 配置对Java SE 7的支持 94
4.4.4 向工程添加国旗图像 95
4.4.5 strings.xml与格式化字符串资源 95
4.4.6 arrays.xml 96
4.4.7 colors.xml 97
4.4.8 button_text_color.xml 98
4.4.9 编辑menu_main.xml 98
4.4.10 创建国旗飘扬动画 99
4.4.11 指定应用设置的preferences.xml 100
4.4.12 添加SettingsActivity类和SettingsActivityFragment类 101
4.5 构建应用的GUI 102
4.5.1 用于纵向模式设备的activity_main.xml布局 102
4.5.2 设计fragment_main.xml布局 102
4.5.3 Graphical Layout编辑器工具栏 106
4.5.4 用于横向设备的content_main.xml布局 107
4.6 MainActivity类 108
4.6.1 package声明和import声明 109
4.6.2 字段 109
4.6.3 重写的Activity方法onCreate 109
4.6.4 重写的Activity方法onStart 111
4.6.5 重写的Activity方法onCreateOptionsMenu 112
4.6.6 重写的Activity方法onOptionsItemSelected 112
4.6.7 实现OnSharedPreferenceChangeListener的匿名内部类 113
4.7 MainActivityFragment类 114
4.7.1 package声明和import声明 114
4.7.2 字段 114
4.7.3 重写的Fragment方法onCreateView 116
4.7.4 updateGuessRows方法 118
4.7.5 updateRegions方法 118
4.7.6 resetQuiz方法 119
4.7.7 loadNextFlag方法 120
4.7.8 getCountryName方法 122
4.7.9 animate方法 122
4.7.10 实现OnClickListener的匿名内部类 123
4.7.11 disableButtons方法 126
4.8 SettingsActivity类 126
4.9 SettingsActivityFragment类 127
4.10 AndroidManifest.xml 127
4.11 小结 129
第5章 Doodlz应用 130
5.1 简介 131
5.2 在AVD中测试Doodlz应用 132
5.3 技术概览 135
5.3.1 Activity和Fragment的生命周期方法 135
5.3.2 定制视图 136
5.3.3 使用SensorManager监听加速计事件 136
5.3.4 定制的DialogFragment 136
5.3.5 使用Canvas,Paint和Bitmap画图 137
5.3.6 处理多点触事件并在Path中保存线信息 137
5.3.7 保存图形 138
5.3.8 打印功能及Android支持库的PrintHelper类 138
5.3.9 Android 6.0的新许可模型 138
5.3.10 利用Gradle构建系统添加依赖性 138
5.4 创建工程和资源 138
5.4.1 创建工程 139
5.4.2 Gradle:向工程添加支持库 139
5.4.3 strings.xml 139
5.4.4 为菜单项导入材料设计图标 140
5.4.5 MainActivityFragment菜单 140
5.4.6 在AndroidManifest.xml中添加许可 142
5.5 构建应用的GUI 142
5.5.1 MainActivity的content_main.xml布局 142
5.5.2 MainActivityFragment的fragment_main.xml布局 143
5.5.3 ColorDialogFragment的fragment_color.xml布局 143
5.5.4 LineWidthDialogFragment的fragment_line_width.xml布局 145
5.5.5 添加EraseImageDialogFragment类 146
5.6 MainActivity类 146
5.7 MainActivityFragment类 147
5.7.1 package声明、import声明与字段 147
5.7.2 重写的Fragment方法onCreateView 148
5.7.3 onResume方法和enableAccelerometerListening方法 149
5.7.4 onPause方法和disableAccelerometerListening方法 150
5.7.5 用于处理加速计事件的匿名内部类 150
5.7.6 confirmErase方法 151
5.7.7 重写的Fragment方法onCreateOptionsMenu和onOptionsItemSelected 152
5.7.8 saveImage方法 153
5.7.9 重写的onRequestPermissionsResult方法 154
5.7.10 getDoodleView方法和setDialogOnScreen5
欢迎来到使用Android软件开发工具集(SDK)、Java编程语言以及快速发展的Android Studio集成开发环境(IDE)的充满活力的世界,进行Android智能手机和平板电脑应用的开发。书中讲解的许多Android开发技术,同样适用于Android Wear和Android TV应用的开发。这样在学习完本书之后,就为这些平台下的应用开发做好了充分准备。
本书将为专业软件开发人员提供前沿的移动计算技术。本书是以开发完整的、可运行的应用来讲解各种概念的,而没有采用只分析代码段的方式。第2~9章中的每一章都给出了一个应用。这些章的开头是应用的介绍,并通过测试给出了一个或者多个执行样本的结果,还给出了一个技术概览。然后,会详细分析源代码。全部源代码都可以从以下站点下载:
学习本书时,建议在IDE中打开相应的源代码。
对Android应用开发人员而言,机会无处不在。Android设备的销售以及应用的下载量,正呈现出指数级的增长。代Android手机于2008年10月面世。根据IDC公布的数据,到2015年3月底,全球智能手机市场Android占据78%的份额,Apple为18.3%,而Blackberry只有0.3% 。在2014年 ,Android设备的出货量超过10亿。2015年Google I/O开发者大会上,Google宣布在过去12个月中,Google Play已经有500亿的应用安装量。Google Play是Google的Android应用市场 。主流的移动平台以及运营商之间激烈的市场竞争,导致了技术的快速更新和价格的下滑。此外,数百个Android设备厂商之间的竞争,也推动了Android社区里硬件和软件的创新。
关于版权以及代码许可的说明
本书中的全部代码以及Android应用的版权都由Deitel & Associates公司所有,书中样本程序的授权许可遵循Creative Commons Attribution 3.0 Unported License,但是它们不能在教育性的其他教程和课本中使用(书本格式或者数字化格式)。此外,作者及出版方并不以任何形式、明确或暗示地保证书中的程序或文档的正确性。对于使用这些程序而导致的直接或间接损失,作者和出版方不承担任何责任。欢迎读者将书中的这些应用作为你自己的应用的起点,在已有的这些功能上进行改动(需满足前述版权条款)。
读者对象
本书假定读者已经具备一定的Java编程基础,并了解面向对象编程。同时,读者还需熟悉XML。Android工程中包含许多XML文件,但通常是通过编辑器与它们交互,从而无须直接了解它们。书中使用的是完整的、可运行的应用,所以如果不了解Java,但具有以C语言为基础的面向对象编程语言的经验,比如C ,C#,Swift或者Objective-C,则应当能够很快熟悉这些材料,学习到大量的Java知识以及Java风格的面向对象编程。
本书并非一本Java教程。如果对学习Java编程感兴趣,请参考作者的下列出版物:
? Java for Programmers, 3/e
? Java Fundamentals, 2/e(视频课程)。这些视频内容可通过SafariBooksOnline.com订阅,也可从Informit.com和Udemy.com购买。
? Java How to Program, 10/e(书号:0-13-380780-0)
本书特点
以下为本书的一些主要特点。
应用驱动的方法。讲解应用的每一章(第2~9章)中都给出了一个完整的应用,探讨了每一个应用的用途,给出了运行应用时的屏幕输出,通过测试进行了检验,并概述了构建应用的技术和体系结构。接着,搭建出每个应用的GUI,给出了完整的代码并详细分析它们。探讨了应用中所用的Android API的编程概念并演示了它们的功能。
Android 6 SDK。本书讲解了Android 6中新推出的软件开发工具集(SDK)的各种特性。
Android Studio IDE。(以IntelliJ IDEA社区版本为基础的)免费Android Studio,是目前Google主推的Android应用开发IDE,而以前的Android开发工具以Eclipse IDE为基础。Android Studio加上免费的Android软件开发工具集(SDK),以及免费的Java开发工具集(JDK),提供了创建、运行、调试Android应用的所有软件,并可利用它们将应用输出和分发(例如,将应用上载到Google Play)。关于如何下载和安装这些软件的说明,请参见后面的“学前准备”小节。
材料设计。利用新的材料设计规范,Google在Android 5中引入了新的Android外观:
这个规范中,Google概述了材料设计的目标和原则,然后详细给出了各种要求,包括动画技术、屏幕元素样式、元素定位、特定用户界面组件的使用、用户界面模式、辅助性、国际化,等等。目前,Google在它的移动应用和基于浏览器的应用中,采用的就是这个材料设计规范。
材料设计是一个宏大的主题,本书中将主要关注如下几个方面:
? 使用Android内置的材料主题。这些材料主题可使Android内置的用户界面组件外观符合材料设计规范。
? 使用内置的Android Studio应用模板。这些模板由Google设计,因此满足材料设计规范。
? 针对特定需求,使用材料设计指南推荐的用户界面组件,比如FloatingActionButton、TextInputLayout和RecyclerView。
除了查看Google的材料设计规范之外,可能还需要参考图书:
本书由专业人士和Ian Clifton(他为本书版写过评论)编写。Ian写到:“Google在2014年推出了材料设计指南,从而给出了一种设计系统,为应用的外观和行为提供了建议。这样做的目的是提供一种设计框架,以提升应用的可视化表现,并为应用创建了一种行为一致性,这在以前的应用中是不存在的。Android User Interface Design:Implemeating Material Design for Developers, 2/e详细讲解了材料设计,为所有开发人员提供有关以用户为中心的设计、颜色原理、文字排列、交互模式以及其他方面的指导。”
支持库及应用兼容性库。当使用新的Android特性时,开发人员会遇到的一个大挑战是与以前的Android平台的向后兼容性问题。现在的许多新特性都是通过支持库引入的,这些支持库使得开发人员能够在应用中使用新特性,对当前和以往的Android平台都提供支持。其中的一个支持库称为AppCompat库。Android Studio应用模板中可以使用这个库以及它的主题,使得所创建的应用能够在大多数Android设备上运行。如果从一开始就用AppCompat创建应用,就可以避免当需要支持旧版本的Android时重新部署代码的问题。
此外,2015年的Google I/O开发人员大会上,还为Android 2.1及更高版本中使用材料设计而推出了Android设计支持库(Android Design Support Library)。参见
材料设计支持已经内置于大多数Android Studio应用模板中。
REST Web服务与JSON。第7章讲解的Weather Viewer应用,演示了如何调用表述性状态转移(Representational State Transfer,REST)Web服务——应用中提供的16日天气预报服务,其数据来自于OpenWeatherMap.org。REST Web服务以JavaScript Object Notation (JSON) 的形式返回天气预报信息,JSON是一种流行的文本数据交换格式,用键/值对数据表示对象。这个应用还使用了来自于org.json的几个类,以处理Web服务的JSON响应。
Android 6.0许可。Android 6.0采用一种新的许可模式,以达到更好的用户体验。在此之前,Android要求在安装时用户就已经获得了应用所需的全部许可,这经常导致用户不愿安装应用。在新模式下,安装应用时不需要任何许可,而是在首次运行相关的特性时才会要求用户已经获得了许可。第5章讲解了这种新的许可模式,并将它用于将一个图像保存到外部存储设备时。
Fragment。从第4章开始,将使用Fragment(碎片)来创建并管理每一个应用GUI的分区。可以组合多个Fragment来创建充分利用平板电脑屏幕尺寸的用户界面。也可以很容易地互换不同的Fragment,以使GUI更显动态。第9章中将这样做。
View-Holder模式,ListView和RecyclerView。第7~9章中的几个应用,都会显示可滚动的数据列表。第7章在ListView中呈现数据并
评论
还没有评论。